home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / cool / cool.lha / ice / pisces / byacc / y.c < prev    next >
Encoding:
C/C++ Source or Header  |  1991-09-04  |  73.6 KB  |  2,754 lines

  1. #ifndef lint
  2. char yysccsid[] = "@(#)yaccpar    1.4 (Berkeley) 02/25/90";
  3. #endif
  4. #line 41 "sdefyacc.y"
  5. #ifndef SCHEMA_DEF_H
  6. #include "schema_def.h"
  7. #endif
  8.  
  9. #ifndef SD_ERROR_H
  10. #include "sd_error.h"
  11. #endif
  12.  
  13. /*
  14.  *  Try to get rid of (some of) these 
  15.  */
  16. #include <ctype.h>
  17. #include <stdio.h>
  18. #include <iostream.h>
  19. #include <string.h>
  20.  
  21. /*
  22.  *   defines the type YYSTYPE in a somewhat hacky way...
  23.  */
  24. #include "yystype.h"
  25.  
  26. /* include the lex stuff*/
  27. #include "lex.h"
  28.     
  29. /* include this to make the CC compiler happy.*/
  30. extern int yyparse( void );
  31.  
  32. /**
  33.  ** Declarations of strings used as args to sd_signal_error
  34.  **/
  35. /* schema_r.y*/
  36. static kb_STRING MISSING_LBRACE_IGNORED_STR = "Missing left brace ignored";
  37. static kb_STRING MISSING_LBRACE_FATAL_STR   = "Missing left brace fatal";
  38.  
  39. /* schema_macros.h*/
  40. static kb_STRING MISSING_SEMICOLON_STR = "Missing semicolon";
  41. static kb_STRING MISSING_COMMA_STR     = "Missing comma?";
  42. static kb_STRING MULTIPLE_CONTEXTLESS_STR = "Contextless multiply declared";
  43. static kb_STRING MULTIPLE_NO_LINKS_STR = "No_links_to_instances multiply declared";
  44.  
  45.  
  46. #line 47 "y_tab.c"
  47. #define CLASS_SCHEMA 257
  48. #define INSTANCE_SCHEMA 258
  49. #define META_KNOWLEDGE_INSTANCE 259
  50. #define BASE_RELATION_CLASS 260
  51. #define BASE_ATTRIBUTE_CLASS 261
  52. #define BASE_MESSAGE_CLASS 262
  53. #define ATTRIBUTE_SPECIALIZATION_CLASS 263
  54. #define RELATION_SPECIALIZATION_CLASS 264
  55. #define MESSAGE_SPECIALIZATION_CLASS 265
  56. #define DECLARE_ATTRIBUTE_SLOTS 266
  57. #define DECLARE_RELATION_SLOTS 267
  58. #define DECLARE_MESSAGE_SLOTS 268
  59. #define SUBCLASS_OF 269
  60. #define INSTANCE_OF 270
  61. #define META_SCHEMA 271
  62. #define META_SLOT 272
  63. #define META_VALUE 273
  64. #define SYSTEM_SCHEMA 274
  65. #define INVERSE_RELATION 275
  66. #define VALUE_TYPE 276
  67. #define CARDINALITY 277
  68. #define SPECIALIZATION_OF 278
  69. #define DECLARATIONS 279
  70. #define CONTEXTLESS 280
  71. #define NO_LINKS_TO_INSTANCES 281
  72. #define SYSTEM_RELATIONS_FIRST 282
  73. #define USER_RELATIONS_FIRST 283
  74. #define RELATIONS 284
  75. #define ATTRIBUTES 285
  76. #define MESSAGES 286
  77. #define SLOT_CONTROL 287
  78. #define NUM 288
  79. #define CHAR 289
  80. #define STRING 290
  81. #define C_IDENTIFIER 291
  82. #define NAME_STRING 292
  83. #define EMPTY 293
  84. #define MULTIPLE 294
  85. #define SINGLE 295
  86. #define NULL_VALUE 296
  87. #define KB_BEFORE_GET 297
  88. #define KB_AFTER_GET 298
  89. #define KB_BEFORE_PUT 299
  90. #define KB_AFTER_PUT 300
  91. #define KB_BEFORE_DEL 301
  92. #define KB_AFTER_DEL 302
  93. #define KB_INCLUSION_RELATION_SPEC 303
  94. #define KB_EXCLUSION_RELATION_SPEC 304
  95. #define KB_INCLUSION_ATTRIBUTE_SPEC 305
  96. #define KB_EXCLUSION_ATTRIBUTE_SPEC 306
  97. #define KB_INCLUSION_MESSAGE_SPEC 307
  98. #define KB_EXCLUSION_MESSAGE_SPEC 308
  99. #define SD_TRUE 309
  100. #define SD_FALSE 310
  101. #define ALL_SLOTS 311
  102. #define NO_SLOTS 312
  103. #define VT_schar 313
  104. #define VT_char 314
  105. #define VT_uchar 315
  106. #define VT_short 316
  107. #define VT_int 317
  108. #define VT_long 318
  109. #define VT_ushort 319
  110. #define VT_uint 320
  111. #define VT_ulong 321
  112. #define VT_float 322
  113. #define VT_double 323
  114. #define VT_void_ptr 324
  115. #define VT_kb_STRING 325
  116. #define VT_kb_ANY 326
  117. #define VT_kb_SLOT_ID 327
  118. #define VT_kb_SCHEMA_ID 328
  119. #define VT_kb_FUNCTION_ID 329
  120. #define VT_kb_BOOLEAN 330
  121. #define YYERRCODE 256
  122. short yylhs[] = {                                        -1,
  123.     1,    1,    2,    2,    2,    2,    2,    2,    2,    2,
  124.     2,    2,    2,    0,    3,    3,    3,    3,    4,    4,
  125.     5,    5,    8,    7,    7,   10,    7,    7,   12,    7,
  126.     7,    9,    9,   11,   11,   13,   13,   14,   15,   16,
  127.     6,    6,    6,    6,    6,    6,   24,   24,   24,   24,
  128.    28,   34,   30,   25,   36,   41,   38,   26,   27,   27,
  129.    43,   43,   43,   43,   45,   45,   45,   50,   46,   44,
  130.    44,   44,   44,   51,   51,   51,   54,   52,   31,   31,
  131.    31,   32,   32,   32,   32,   33,   33,   39,   39,   39,
  132.    40,   40,   40,   40,   40,   49,   49,   47,   47,   48,
  133.    48,   62,   62,   62,   53,   61,   61,   61,   61,   61,
  134.    61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
  135.    61,   61,   61,   61,   55,   55,   55,   64,   64,   64,
  136.    63,   63,   29,   29,   58,   58,   37,   37,   66,   42,
  137.    23,   20,   19,   19,   19,   67,   67,   67,   67,   67,
  138.    67,   68,   68,   68,   68,   68,   68,   65,   65,   56,
  139.    56,   56,   56,   70,   70,   70,   69,   69,   69,   69,
  140.    71,   71,   59,   59,   59,   59,   59,   59,   57,   57,
  141.    60,   60,   60,   17,   17,   17,   72,   72,   35,   35,
  142.    73,   73,   73,   73,   78,   74,   74,   80,   75,   75,
  143.    82,   76,   76,   83,   83,   84,   84,   77,   77,   85,
  144.    85,   85,   86,   87,   89,   90,   90,   90,   21,   21,
  145.    21,   22,   88,   88,   88,   92,   92,   92,   91,   91,
  146.    79,   79,   93,   93,   93,   97,   94,   95,   18,   18,
  147.    18,   18,   18,   18,   18,   18,   18,   18,   18,   18,
  148.    18,   18,   18,   18,   18,   18,   18,   96,   96,   96,
  149.    96,   99,   99,   99,   99,   98,   98,  100,  100,  100,
  150.   100,  100,  100,  100,  100,  100,   81,   81,  101,  101,
  151.   101,  105,  102,  103,  104,  104,  104,  104,  104,  104,
  152.   104,  106,  106,  107,  107,
  153. };
  154. short yylen[] = {                                         2,
  155.     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  156.     1,    1,    1,    1,    1,    1,    2,    2,    1,    2,
  157.     1,    2,    0,    5,    1,    0,    5,    1,    0,    5,
  158.     1,    1,    2,    1,    2,    1,    2,    4,    7,    2,
  159.     0,    1,    1,    1,    1,    1,    2,    2,    3,    3,
  160.     1,    0,    7,    3,    1,    0,    7,    3,    1,    1,
  161.     2,    2,    3,    3,    1,    1,    1,    0,   10,    2,
  162.     2,    3,    3,    1,    1,    1,    0,    8,    3,    3,
  163.     2,    0,    3,    3,    3,    0,    3,    3,    3,    2,
  164.     0,    3,    5,    3,    3,    0,    3,    0,    3,    0,
  165.     3,    1,    1,    1,    3,    1,    1,    1,    1,    1,
  166.     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  167.     1,    1,    1,    0,    0,    1,    3,    1,    3,    2,
  168.     1,    1,    1,    1,    1,    1,    1,    0,    1,    1,
  169.     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  170.     1,    1,    1,    1,    1,    1,    1,    1,    1,    0,
  171.     1,    2,    3,    1,    3,    2,    1,    1,    1,    1,
  172.     1,    1,    0,    1,    1,    1,    1,    1,    1,    5,
  173.     2,    2,    1,    1,    1,    0,    0,    1,    0,    2,
  174.     1,    1,    1,    1,    0,    3,    1,    0,    3,    1,
  175.     0,    3,    1,    0,    3,    0,    3,    1,    2,    1,
  176.     1,    1,    5,    6,    3,    2,    2,    1,    1,    1,
  177.     0,    1,    0,    2,    4,    1,    3,    2,    1,    5,
  178.     1,    2,    1,    1,    1,    0,    7,    5,    1,    1,
  179.     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
  180.     1,    1,    1,    1,    1,    1,    0,    0,    2,    4,
  181.     2,    0,    1,    3,    2,    1,    5,    1,    3,    1,
  182.     1,    1,    1,    1,    1,    1,    1,    2,    1,    1,
  183.     1,    0,    5,    5,    0,    2,    4,    4,    4,    2,
  184.     3,    1,    5,    3,    1,
  185. };
  186. short yydefred[] = {                                      0,
  187.    46,   51,   55,    0,   65,   66,   67,   74,   75,   76,
  188.     0,    0,    0,    0,    0,    0,    0,   19,   21,   42,
  189.    43,   44,   45,    0,    0,   59,   60,    0,    0,  158,
  190.   159,    0,  140,    0,    0,    0,    0,    0,   20,   22,
  191.     3,    6,    5,  133,    8,    9,    7,   10,    4,   11,
  192.    12,   13,   47,   48,    0,  134,    0,  139,  137,   61,
  193.    62,    0,   70,   71,    0,    0,   58,    0,    0,    0,
  194.     0,   49,   50,   54,    0,   63,   64,    0,   72,   73,
  195.     0,    0,  184,  185,    0,   32,    0,    0,    0,   34,
  196.     0,   36,    0,  141,    0,    0,    0,    0,  135,   90,
  197.     0,  136,    0,   56,   24,   33,  239,  240,  241,  242,
  198.   243,  244,  245,  246,  247,  248,  249,  250,  251,  252,
  199.   253,  254,  255,  256,    0,    0,   27,   35,   30,   37,
  200.    40,  131,    0,   81,    0,  126,  132,    0,   52,    0,
  201.     0,    0,    0,   89,   88,  174,  177,  175,  176,    1,
  202.     2,    0,  178,    0,    0,  146,  147,  148,  149,  150,
  203.   151,  152,  153,  154,  155,  156,  157,    0,  145,  143,
  204.   144,    0,  142,  128,    0,   80,   79,  168,  169,  171,
  205.   172,    0,  170,    0,  161,  167,    0,  106,  107,  108,
  206.   109,  110,  111,  112,  113,  114,  115,  116,  117,  118,
  207.   119,  120,  121,  122,  123,    0,    0,    0,    0,   77,
  208.     0,   95,   92,   94,    0,  189,   38,    0,  127,    0,
  209.   130,  162,  164,    0,   85,   83,   84,  189,   99,  102,
  210.   103,  104,    0,    0,    0,  105,    0,    0,    0,  179,
  211.     0,    0,  219,  220,    0,  129,  163,    0,  166,    0,
  212.   101,  183,    0,    0,    0,   68,  189,   93,    0,   87,
  213.   194,    0,    0,    0,   57,  190,  191,  192,  193,    0,
  214.   222,  165,   53,  182,  181,   97,    0,    0,    0,    0,
  215.     0,    0,   39,  189,   78,    0,  212,  188,    0,    0,
  216.     0,  208,  210,  211,  235,    0,    0,    0,  231,  233,
  217.   234,  281,    0,    0,    0,  277,  279,  280,    0,  180,
  218.     0,    0,  209,    0,    0,  232,    0,  282,  278,   69,
  219.     0,    0,    0,    0,    0,    0,    0,    0,  218,    0,
  220.     0,    0,    0,    0,    0,    0,    0,    0,  236,    0,
  221.     0,    0,  217,  216,  215,    0,    0,    0,  229,  224,
  222.   213,  207,    0,  238,    0,  284,    0,  290,    0,    0,
  223.   286,  292,  283,  214,  226,    0,    0,  205,    0,    0,
  224.     0,  291,    0,    0,  225,    0,  228,    0,  268,  271,
  225.   272,    0,  261,  273,  274,  275,  276,    0,    0,  270,
  226.   259,  266,  237,  294,  287,  288,  289,    0,  227,    0,
  227.     0,  263,    0,    0,    0,  230,  269,  260,    0,  265,
  228.     0,  293,  264,    0,  267,
  229. };
  230. short yydgoto[] = {                                      14,
  231.   183,   54,   15,   16,   17,   18,   19,   34,   85,   35,
  232.    89,   36,   91,   86,   90,   92,   87,  125,  168,  172,
  233.   245,  270,   93,   20,   21,   22,   23,   24,  240,   73,
  234.    96,  139,  216,  187,  242,   25,   57,   67,   82,  104,
  235.   155,   32,   26,   27,   28,   77,  141,  208,  235,  277,
  236.    29,   80,  143,  237,  135,  184,  241,  101,  154,  255,
  237.   206,  233,  136,  175,   56,   59,  170,  171,  185,  224,
  238.   186,  290,  266,  267,  268,  269,  291,  280,  298,  281,
  239.   305,  282,  338,  325,  292,  293,  294,  335,  322,  332,
  240.   350,  366,  299,  300,  301,  370,  355,  391,  403,  392,
  241.   306,  307,  308,  342,  328,  361,  362,
  242. };
  243. short yysindex[] = {                                    845,
  244.     0,    0,    0, -211,    0,    0,    0,    0,    0,    0,
  245.     0,    0,    0,    0,  845,  858, -172,    0,    0,    0,
  246.     0,    0,    0,  465, -211,    0,    0,  489,  518,    0,
  247.     0,  -90,    0,  -80,  -71,  -54,  858, -172,    0,    0,
  248.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  249.     0,    0,    0,    0,  552,    0,  -90,    0,    0,    0,
  250.     0,  573,    0,    0,  591, -199,    0, -190,   35, -211,
  251.  -184,    0,    0,    0, -184,    0,    0, -184,    0,    0,
  252.  -111, -180,    0,    0, -103,    0,  698, -190,  -24,    0,
  253.   -98,    0,   53,    0,  351, -156, -142, -138,    0,    0,
  254.   269,    0,  -78,    0,    0,    0,    0,    0,    0,    0,
  255.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  256.     0,    0,    0,    0,  756, -211,    0,    0,    0,    0,
  257.     0,    0, -213,    0,  294,    0,    0,  525,    0,  716,
  258.  -123, -159, -156,    0,    0,    0,    0,    0,    0,    0,
  259.     0,  189,    0,  -49, -102,    0,    0,    0,    0,    0,
  260.     0,    0,    0,    0,    0,    0,    0,   93,    0,    0,
  261.     0,  101,    0,    0,  327,    0,    0,    0,    0,    0,
  262.     0,  229,    0,  361,    0,    0, -102,    0,    0,    0,
  263.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  264.     0,    0,    0,    0,    0,  109, -130, -101,  113,    0,
  265.    62,    0,    0,    0,  -68,    0,    0, -185,    0, -213,
  266.     0,    0,    0,  301,    0,    0,    0,    0,    0,    0,
  267.     0,    0,  123, -119, -156,    0, -102,  141, -159,    0,
  268.   142,  -77,    0,    0, -211,    0,    0,  209,    0,  -41,
  269.     0,    0,   85,  756,  153,    0,    0,    0,  181,    0,
  270.     0,    0,    0,    0,    0,    0,    0,    0,    0,  193,
  271.     0,    0,    0,    0,    0,    0, -102,  273, -211,   73,
  272.   107,  130,    0,    0,    0,  115,    0,    0,  -47, -190,
  273.    73,    0,    0,    0,    0,  -47, -190,  107,    0,    0,
  274.     0,    0,  -47, -211,  130,    0,    0,    0,  343,    0,
  275.    19, -211,    0,   20,  698,    0,   20,    0,    0,    0,
  276.  -110,   20,  281, -159,   83,  756,   83,  295,    0,  239,
  277.  -211,  314,   83,   18,  342,  344,  -68,  380,    0,  381,
  278.    30,  370,    0,    0,    0,  390,   60, -211,    0,    0,
  279.     0,    0,  373,    0,  341,    0,  393,    0,  -17,  157,
  280.     0,    0,    0,    0,    0,  -39,  176,    0,    7,  391,
  281.   410,    0,  -32,  200,    0,   60,    0,  -68,    0,    0,
  282.     0,  435,    0,    0,    0,    0,    0,   49, -153,    0,
  283.     0,    0,    0,    0,    0,    0,    0,  -68,    0,  436,
  284.   437,    0,   23,  206,  441,    0,    0,    0,   49,    0,
  285.   -68,    0,    0,  442,    0,
  286. };
  287. short yyrindex[] = {                                    484,
  288.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  289.   150,  178,  197,    0,  487,   38,  118,    0,    0,    0,
  290.     0,    0,    0,    0,  371,    0,    0,    0,    0,    0,
  291.     0,    0,    0,    0,    0,    0,   57,  131,    0,    0,
  292.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  293.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  294.     0,    0,    0,    0,    0,    0,    0,  680,    0,    0,
  295.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  296.     0,  305,    0,    0,  680,    0,  774, -166,    0,    0,
  297.     0,    0,    0,    0,  338,  528,  622,    0,    0,    0,
  298.     0,    0,  388,    0,    0,    0,    0,    0,    0,    0,
  299.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  300.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  301.     0,    0,    0,    0,    0,    0,    0,  407,    0,  434,
  302.   644,    0,  528,    0,    0,    0,    0,    0,    0,    0,
  303.     0,  374,    0,    0,  627,    0,    0,    0,    0,    0,
  304.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  305.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  306.     0,    0,    0,    0,    0,    0,  627,    0,    0,    0,
  307.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  308.     0,    0,    0,    0,    0,    0,    0,  555,    0,    0,
  309.     0,    0,    0,    0,    0,    0,    0, -146,    0,    0,
  310.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  311.     0,    0,    0,  792,  528,    0,  627,    0,    0,    0,
  312.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  313.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  314.     0,  211,  -37,  232,    0,    0,    0,    0,    0,    0,
  315.     0,    0,    0,    0,    0,    0,  627,    0,    0,  133,
  316.   640, -125,    0,    0,    0,    0,    0,    0,  133, -166,
  317.   -96,    0,    0,    0,    0,  640,  680,  403,    0,    0,
  318.     0,    0, -125,    0,  -53,    0,    0,    0,    0,    0,
  319.     0,    0,    0,  -30,  774,    0,  -30,    0,    0,    0,
  320.  -146,  -30,  439,    0,  466,    0,  466,  449,    0,    0,
  321.     0,    0,  466,    0,    0,    0,    0,    0,    0,    0,
  322.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  323.     0,    0,    0,    0,  141,    0,  360,    0,    0,    0,
  324.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  325.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  326.     0,   58,    0,    0,    0,    0,    0,  -19,    0,    0,
  327.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  328.     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
  329.     0,    0,    0,    0,    0,
  330. };
  331. short yygindex[] = {                                      0,
  332.   -88,  -11,    0,  499,  500,   16,   22,    0,    0,    0,
  333.     0,    0,    0,  445,  430,  431,  -79,  212, -228,  214,
  334.   210,  202,  230,    0,    0,    0,    0,    0,  -22,    0,
  335.   -38, -124, -163,    0, -192,    0,    0,  478,    0,    0,
  336.     0,  257,    0,    0,    0,    0,    0,    0,    0,    0,
  337.     0,    0,    0,    0,    0,    0, -295,    0,  385,    0,
  338.     0,    0, -113,    0,   -4,    0,    0,    0, -151,    0,
  339.     0, -154,    0,    0,    0,    0,    0,    0,    0,    0,
  340.     0,    0, -299, -276,  250,  253,    0,    0,    0,    0,
  341.  -317,    0,  245,  254,    0,    0,    0, -353,    0,  160,
  342.   246,  249,    0,    0,    0, -291,  196,
  343. };
  344. #define YYTABLESIZE 1123
  345. short yytable[] = {                                      33,
  346.   348,   55,  198,  253,  376,   62,   65,  360,  126,  213,
  347.   206,  396,  330,  100,  153,   88,   61,   64,  210,  174,
  348.    58,  105,  360,  228,  262,  275,  129,  340,  196,  365,
  349.   223,   39,   66,  346,  402,  250,   97,   15,   40,   98,
  350.   327,  353,   68,   72,  152,  333,  389,  265,  377,  410,
  351.    76,   69,   39,   79,  239,  413,   17,  348,  399,   40,
  352.   132,  221,  389,  153,  278,   94,  409,  373,   70,  360,
  353.    81,  202,  249,  257,   88,  212,  102,   30,   31,   30,
  354.    31,  397,  400,  273,   95,  375,   94,  200,  389,  145,
  355.   137,  309,  395,   11,   12,   13,  272,  339,  103,  348,
  356.   127,  158,  405,   83,   84,  262,  246,  372,  243,  244,
  357.   256,  131,  289,  284,   44,  414,  158,   16,  232,  209,
  358.   169,  173,  138,  177,  186,  186,  297,  304,  137,  388,
  359.    18,   30,   31,  140,  379,  380,  381,  382,   31,  142,
  360.   347,  297,  214,  297,  221,  221,  296,  408,  304,   25,
  361.   304,  217,  359,  207,  254,  384,  385,  386,  387,  218,
  362.   150,  151,   99,  230,  231,  187,  187,  229,  215,  303,
  363.   137,  236,  227,  234,   83,   84,  252,   28,  261,   30,
  364.    31,  251,  158,  243,  244,  329,  238,  196,  196,  196,
  365.    83,   84,   30,   31,  187,  187,   31,  187,  187,  258,
  366.   260,  146,  147,  148,  149,   44,  262,  263,  264,  274,
  367.   312,  276,  150,  151,  261,  137,  259,  315,  198,   41,
  368.    42,   43,   30,   31,  279,   45,   46,   47,   48,   49,
  369.   202,  202,  202,  283,   50,   51,   52,  187,  187,  310,
  370.   271,  206,  262,  263,  264,  288,  200,  200,  200,  169,
  371.   195,   30,   31,  198,  198,  198,  198,  198,  357,  198,
  372.   198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
  373.   198,  201,   23,  357,   33,  198,  198,  198,  198,  198,
  374.   198,  198,  198,  198,  198,  198,  198,  198,  198,  198,
  375.   198,  198,  198,  321,  379,  380,  381,  382,   31,   94,
  376.    26,  336,  383,   15,   15,   15,  324,  173,   30,   31,
  377.   379,  380,  381,  382,   31,  384,  385,  386,  387,   29,
  378.   357,  169,   17,   17,   17,  358,  271,  144,  287,  349,
  379.   158,  384,  385,  386,  387,  197,  379,  380,  381,  382,
  380.    31,  334,  349,  367,  248,  158,  158,  158,  158,  158,
  381.    30,   31,  176,  222,  337,  341,  203,  384,  385,  386,
  382.   387,  349,  295,  343,  390,  288,  158,  158,  158,  158,
  383.   220,  349,  345,   16,   16,   16,   16,   16,   16,   16,
  384.    16,   16,   16,  390,  390,  302,   18,   18,   18,   18,
  385.    18,   18,   18,   18,   18,   18,  125,  285,  390,  288,
  386.   351,  369,  352,  295,  390,   25,   25,   25,   25,   25,
  387.    25,   25,   25,   25,   25,   25,   25,   25,  295,  226,
  388.   354,  356,  288,  187,  187,  247,  187,  187,  363,   91,
  389.   364,  368,  371,   28,   28,   28,   28,   28,   28,   28,
  390.    28,   28,   28,   28,   28,   28,  173,  357,  378,  393,
  391.   394,  219,   31,   31,   31,   31,   31,   31,   31,   31,
  392.    31,   31,   31,   31,   31,  160,  195,  320,  146,  147,
  393.   148,  149,  398,  133,  401,  134,  406,  407,  411,  150,
  394.   151,  412,  415,   41,  295,  225,   14,  201,  178,  179,
  395.   180,  181,  124,  138,  197,  197,  197,  223,  173,  150,
  396.   151,  195,  195,  195,  195,  195,  204,  285,  178,  179,
  397.   180,  181,  173,   37,   38,  203,  203,  203,  128,  150,
  398.   151,  130,  201,  201,  201,  323,  326,  199,  261,  106,
  399.   331,  160,  344,  318,   74,  286,  211,   41,   42,   43,
  400.   313,  311,  316,   45,   46,   47,   48,   49,  404,  314,
  401.   319,  317,   50,   51,   52,  374,  262,  263,  264,    0,
  402.    91,    0,   41,   42,   43,    0,    0,    0,   45,   46,
  403.    47,   48,   49,    0,    0,   91,    0,   50,   51,   52,
  404.   178,  179,  180,  181,    0,    0,    0,   53,   91,   91,
  405.    91,  150,  151,    0,    0,    0,    0,    0,  261,    0,
  406.   132,    0,    0,    0,    0,    0,  125,  125,  125,    0,
  407.     0,   60,  125,  125,  125,  125,  125,   30,   31,    0,
  408.     0,  125,  125,  125,  132,    0,  262,  263,  264,   41,
  409.    42,   43,  295,    0,    0,   45,   46,   47,   48,   49,
  410.    63,   30,   31,    0,   50,   51,   52,  182,    0,    0,
  411.   295,    0,   82,    0,    0,    0,  173,  173,  173,    0,
  412.     0,    0,  173,  173,  173,  173,  173,    0,    0,    0,
  413.     0,  173,  173,  173,   71,  160,  160,  160,    0,   96,
  414.     0,  160,  160,  160,  160,  160,  199,  199,  199,    0,
  415.   160,  160,  160,  187,  187,   75,  187,  187,    0,  187,
  416.   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
  417.   187,    0,    0,   78,    0,  187,  187,  187,  187,  187,
  418.   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
  419.   187,  187,  187,   41,   42,   43,    0,    0,   44,   45,
  420.    46,   47,   48,   49,    0,    0,   98,    0,   50,   51,
  421.    52,   86,    0,    0,    0,   30,   31,   41,   42,   43,
  422.     0,    0,   44,   45,   46,   47,   48,   49,  100,    0,
  423.     0,    0,   50,   51,   52,    0,    0,    0,    0,   30,
  424.    31,    0,    0,   82,    0,    0,   41,   42,   43,    0,
  425.     0,   44,   45,   46,   47,   48,   49,    0,   82,    0,
  426.     0,   50,   51,   52,  178,  179,  180,  181,   30,   31,
  427.    96,   82,   82,   82,    0,  150,  151,    0,    0,    0,
  428.    41,   42,   43,    0,    0,   96,   45,   46,   47,   48,
  429.    49,    0,    0,   96,    0,   50,   51,   52,   96,   96,
  430.    96,   41,   42,   43,    0,    0,    0,   45,   46,   47,
  431.    48,   49,    0,    0,    0,    0,   50,   51,   52,   41,
  432.    42,   43,    0,    0,    0,   45,   46,   47,   48,   49,
  433.     0,    0,    0,    0,   50,   51,   52,   98,    0,    0,
  434.     0,    0,   86,    0,    0,    0,    0,    0,    0,    0,
  435.     0,    0,   98,    0,    0,    0,   98,    0,   98,  100,
  436.    98,    0,    0,    0,    0,   98,   98,   98,    0,    0,
  437.    86,   86,   86,    0,  100,    0,    0,    0,  100,    0,
  438.     0,    0,  100,    0,    0,    0,    0,  100,  100,  100,
  439.   187,  187,    0,  187,  187,    0,  187,  187,  187,  187,
  440.   187,  187,  187,  187,  187,  187,  187,  187,    0,    0,
  441.     0,    0,  187,  187,  187,  187,  187,  187,  187,  187,
  442.   187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
  443.   186,  186,    0,    0,    0,    0,  186,  186,  186,  186,
  444.   186,  186,  186,  186,  186,  186,  186,  186,    0,    0,
  445.     0,    0,  186,  186,  186,  186,  186,  186,  186,  186,
  446.   186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
  447.   107,  108,  109,  110,  111,  112,  113,  114,  115,  116,
  448.   117,  118,  119,  120,  121,  122,  123,  124,  188,  189,
  449.   190,  191,  192,  193,  194,  195,  196,  197,  198,  199,
  450.   200,  201,  202,  203,  204,  205,   30,   31,    0,    0,
  451.     0,    0,  156,  157,  158,  159,  160,  161,  162,  163,
  452.   164,  165,  166,  167,  257,  257,    0,    0,    0,    0,
  453.   257,  257,  257,  257,  257,  257,  257,  257,  257,  257,
  454.   257,  257,  186,  186,    0,    0,    0,    0,  186,  186,
  455.   186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
  456.     1,    2,    3,    4,    5,    6,    7,    8,    9,   10,
  457.    11,   12,   13,    1,    2,    3,    4,    5,    6,    7,
  458.     8,    9,   10,
  459. };
  460. short yycheck[] = {                                       4,
  461.    40,   24,   40,  123,   44,   28,   29,   40,   88,   59,
  462.    41,   44,  123,  125,  103,   40,   28,   29,  143,  133,
  463.    25,  125,   40,  187,   44,  254,  125,  327,  125,  347,
  464.   182,   16,  123,  333,  388,  228,   75,    0,   17,   78,
  465.   317,  337,  123,   55,  123,  322,   40,  125,  366,  403,
  466.    62,  123,   37,   65,  123,  409,    0,   40,  376,   38,
  467.   274,  175,   40,  152,  257,   70,   44,  359,  123,   40,
  468.   270,  125,  224,  237,   40,  125,   81,  291,  292,  291,
  469.   292,  373,  378,  125,  269,  125,   91,  125,   40,  101,
  470.    95,  284,  125,  266,  267,  268,  248,  326,  279,   40,
  471.   125,   44,  398,  294,  295,  125,  220,  125,  294,  295,
  472.   235,   59,   40,  277,  274,  411,   59,    0,  207,  142,
  473.   125,  126,  279,  135,  291,  292,  281,  282,  133,  123,
  474.     0,  291,  292,  276,  288,  289,  290,  291,  292,  278,
  475.   123,  296,  154,  298,  291,  292,   40,  125,  303,    0,
  476.   305,   59,  123,  277,  234,  309,  310,  311,  312,   59,
  477.   291,  292,  274,  294,  295,  291,  292,   59,  271,   40,
  478.   175,   59,  184,  275,  294,  295,  296,    0,  256,  291,
  479.   292,   59,  125,  294,  295,  296,  125,  284,  285,  286,
  480.   294,  295,  291,  292,  291,  292,    0,  294,  295,   59,
  481.    59,  280,  281,  282,  283,  274,  284,  285,  286,  125,
  482.   290,   59,  291,  292,  256,  220,  239,  297,  256,  269,
  483.   270,  271,  291,  292,   44,  275,  276,  277,  278,  279,
  484.   284,  285,  286,   41,  284,  285,  286,  291,  292,  125,
  485.   245,  272,  284,  285,  286,  293,  284,  285,  286,  254,
  486.    40,  291,  292,  291,  292,  293,  294,  295,  291,  297,
  487.   298,  299,  300,  301,  302,  303,  304,  305,  306,  307,
  488.   308,   40,  123,  291,  279,  313,  314,  315,  316,  317,
  489.   318,  319,  320,  321,  322,  323,  324,  325,  326,  327,
  490.   328,  329,  330,  275,  288,  289,  290,  291,  292,  304,
  491.   123,  324,  296,  266,  267,  268,  287,  312,  291,  292,
  492.   288,  289,  290,  291,  292,  309,  310,  311,  312,  123,
  493.   291,  326,  266,  267,  268,  296,  331,   59,  256,  334,
  494.   273,  309,  310,  311,  312,  125,  288,  289,  290,  291,
  495.   292,   61,  347,  348,   44,  288,  289,  290,  291,  292,
  496.   291,  292,   59,  125,  272,   61,  125,  309,  310,  311,
  497.   312,  366,  256,  125,  369,  293,  309,  310,  311,  312,
  498.    44,  376,   59,  256,  257,  258,  259,  260,  261,  262,
  499.   263,  264,  265,  388,  389,  256,  256,  257,  258,  259,
  500.   260,  261,  262,  263,  264,  265,   59,  125,  403,  293,
  501.    59,   61,   59,   44,  409,  256,  257,  258,  259,  260,
  502.   261,  262,  263,  264,  265,  266,  267,  268,   59,   59,
  503.    41,   41,  293,  291,  292,  125,  294,  295,   59,  125,
  504.    41,   59,   40,  256,  257,  258,  259,  260,  261,  262,
  505.   263,  264,  265,  266,  267,  268,   59,  291,  273,   59,
  506.    41,  125,  256,  257,  258,  259,  260,  261,  262,  263,
  507.   264,  265,  266,  267,  268,   59,  256,  125,  280,  281,
  508.   282,  283,  273,  123,   40,  125,   41,   41,  273,  291,
  509.   292,   41,   41,    0,  125,  125,    0,  256,  280,  281,
  510.   282,  283,   59,  123,  284,  285,  286,   59,  125,  291,
  511.   292,  291,  292,  293,  294,  295,   41,   59,  280,  281,
  512.   282,  283,  125,   15,   15,  284,  285,  286,   89,  291,
  513.   292,   91,  291,  292,  293,  312,  315,  125,  256,   85,
  514.   321,  125,  331,  304,   57,  279,  152,  269,  270,  271,
  515.   291,  289,  298,  275,  276,  277,  278,  279,  389,  296,
  516.   305,  303,  284,  285,  286,  360,  284,  285,  286,   -1,
  517.   256,   -1,  269,  270,  271,   -1,   -1,   -1,  275,  276,
  518.   277,  278,  279,   -1,   -1,  271,   -1,  284,  285,  286,
  519.   280,  281,  282,  283,   -1,   -1,   -1,  123,  284,  285,
  520.   286,  291,  292,   -1,   -1,   -1,   -1,   -1,  256,   -1,
  521.   274,   -1,   -1,   -1,   -1,   -1,  269,  270,  271,   -1,
  522.    -1,  123,  275,  276,  277,  278,  279,  291,  292,   -1,
  523.    -1,  284,  285,  286,  274,   -1,  284,  285,  286,  269,
  524.   270,  271,  273,   -1,   -1,  275,  276,  277,  278,  279,
  525.   123,  291,  292,   -1,  284,  285,  286,  123,   -1,   -1,
  526.   291,   -1,  125,   -1,   -1,   -1,  269,  270,  271,   -1,
  527.    -1,   -1,  275,  276,  277,  278,  279,   -1,   -1,   -1,
  528.    -1,  284,  285,  286,  123,  269,  270,  271,   -1,  125,
  529.    -1,  275,  276,  277,  278,  279,  284,  285,  286,   -1,
  530.   284,  285,  286,  291,  292,  123,  294,  295,   -1,  297,
  531.   298,  299,  300,  301,  302,  303,  304,  305,  306,  307,
  532.   308,   -1,   -1,  123,   -1,  313,  314,  315,  316,  317,
  533.   318,  319,  320,  321,  322,  323,  324,  325,  326,  327,
  534.   328,  329,  330,  269,  270,  271,   -1,   -1,  274,  275,
  535.   276,  277,  278,  279,   -1,   -1,  125,   -1,  284,  285,
  536.   286,  125,   -1,   -1,   -1,  291,  292,  269,  270,  271,
  537.    -1,   -1,  274,  275,  276,  277,  278,  279,  125,   -1,
  538.    -1,   -1,  284,  285,  286,   -1,   -1,   -1,   -1,  291,
  539.   292,   -1,   -1,  256,   -1,   -1,  269,  270,  271,   -1,
  540.    -1,  274,  275,  276,  277,  278,  279,   -1,  271,   -1,
  541.    -1,  284,  285,  286,  280,  281,  282,  283,  291,  292,
  542.   256,  284,  285,  286,   -1,  291,  292,   -1,   -1,   -1,
  543.   269,  270,  271,   -1,   -1,  271,  275,  276,  277,  278,
  544.   279,   -1,   -1,  279,   -1,  284,  285,  286,  284,  285,
  545.   286,  269,  270,  271,   -1,   -1,   -1,  275,  276,  277,
  546.   278,  279,   -1,   -1,   -1,   -1,  284,  285,  286,  269,
  547.   270,  271,   -1,   -1,   -1,  275,  276,  277,  278,  279,
  548.    -1,   -1,   -1,   -1,  284,  285,  286,  256,   -1,   -1,
  549.    -1,   -1,  256,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
  550.    -1,   -1,  271,   -1,   -1,   -1,  275,   -1,  277,  256,
  551.   279,   -1,   -1,   -1,   -1,  284,  285,  286,   -1,   -1,
  552.   284,  285,  286,   -1,  271,   -1,   -1,   -1,  275,   -1,
  553.    -1,   -1,  279,   -1,   -1,   -1,   -1,  284,  285,  286,
  554.   291,  292,   -1,  294,  295,   -1,  297,  298,  299,  300,
  555.   301,  302,  303,  304,  305,  306,  307,  308,   -1,   -1,
  556.    -1,   -1,  313,  314,  315,  316,  317,  318,  319,  320,
  557.   321,  322,  323,  324,  325,  326,  327,  328,  329,  330,
  558.   291,  292,   -1,   -1,   -1,   -1,  297,  298,  299,  300,
  559.   301,  302,  303,  304,  305,  306,  307,  308,   -1,   -1,
  560.    -1,   -1,  313,  314,  315,  316,  317,  318,  319,  320,
  561.   321,  322,  323,  324,  325,  326,  327,  328,  329,  330,
  562.   313,  314,  315,  316,  317,  318,  319,  320,  321,  322,
  563.   323,  324,  325,  326,  327,  328,  329,  330,  313,  314,
  564.   315,  316,  317,  318,  319,  320,  321,  322,  323,  324,
  565.   325,  326,  327,  328,  329,  330,  291,  292,   -1,   -1,
  566.    -1,   -1,  297,  298,  299,  300,  301,  302,  303,  304,
  567.   305,  306,  307,  308,  291,  292,   -1,   -1,   -1,   -1,
  568.   297,  298,  299,  300,  301,  302,  303,  304,  305,  306,
  569.   307,  308,  291,  292,   -1,   -1,   -1,   -1,  297,  298,
  570.   299,  300,  301,  302,  303,  304,  305,  306,  307,  308,
  571.   256,  257,  258,  259,  260,  261,  262,  263,  264,  265,
  572.   266,  267,  268,  256,  257,  258,  259,  260,  261,  262,
  573.   263,  264,  265,
  574. };
  575. #define YYFINAL 14
  576. #ifndef YYDEBUG
  577. #define YYDEBUG 0
  578. #endif
  579. #define YYMAXTOKEN 330
  580. #if YYDEBUG
  581. char *yyname[] = {
  582. "end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  583. 0,0,0,0,0,0,"'('","')'",0,0,"','",0,0,0,0,0,0,0,0,0,0,0,0,0,0,"';'",0,"'='",0,0,
  584. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  585. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'{'",0,"'}'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  586. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  587. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  588. 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
  589. "CLASS_SCHEMA","INSTANCE_SCHEMA","META_KNOWLEDGE_INSTANCE",
  590. "BASE_RELATION_CLASS","BASE_ATTRIBUTE_CLASS","BASE_MESSAGE_CLASS",
  591. "ATTRIBUTE_SPECIALIZATION_CLASS","RELATION_SPECIALIZATION_CLASS",
  592. "MESSAGE_SPECIALIZATION_CLASS","DECLARE_ATTRIBUTE_SLOTS",
  593. "DECLARE_RELATION_SLOTS","DECLARE_MESSAGE_SLOTS","SUBCLASS_OF","INSTANCE_OF",
  594. "META_SCHEMA","META_SLOT","META_VALUE","SYSTEM_SCHEMA","INVERSE_RELATION",
  595. "VALUE_TYPE","CARDINALITY","SPECIALIZATION_OF","DECLARATIONS","CONTEXTLESS",
  596. "NO_LINKS_TO_INSTANCES","SYSTEM_RELATIONS_FIRST","USER_RELATIONS_FIRST",
  597. "RELATIONS","ATTRIBUTES","MESSAGES","SLOT_CONTROL","NUM","CHAR","STRING",
  598. "C_IDENTIFIER","NAME_STRING","EMPTY","MULTIPLE","SINGLE","NULL_VALUE",
  599. "KB_BEFORE_GET","KB_AFTER_GET","KB_BEFORE_PUT","KB_AFTER_PUT","KB_BEFORE_DEL",
  600. "KB_AFTER_DEL","KB_INCLUSION_RELATION_SPEC","KB_EXCLUSION_RELATION_SPEC",
  601. "KB_INCLUSION_ATTRIBUTE_SPEC","KB_EXCLUSION_ATTRIBUTE_SPEC",
  602. "KB_INCLUSION_MESSAGE_SPEC","KB_EXCLUSION_MESSAGE_SPEC","SD_TRUE","SD_FALSE",
  603. "ALL_SLOTS","NO_SLOTS","VT_schar","VT_char","VT_uchar","VT_short","VT_int",
  604. "VT_long","VT_ushort","VT_uint","VT_ulong","VT_float","VT_double","VT_void_ptr",
  605. "VT_kb_STRING","VT_kb_ANY","VT_kb_SLOT_ID","VT_kb_SCHEMA_ID",
  606. "VT_kb_FUNCTION_ID","VT_kb_BOOLEAN",
  607. };
  608. char *yyrule[] = {
  609. "$accept : start_sdefs",
  610. "garbage : C_IDENTIFIER",
  611. "garbage : NAME_STRING",
  612. "sd_keywd : SUBCLASS_OF",
  613. "sd_keywd : DECLARATIONS",
  614. "sd_keywd : META_SCHEMA",
  615. "sd_keywd : INSTANCE_OF",
  616. "sd_keywd : CARDINALITY",
  617. "sd_keywd : INVERSE_RELATION",
  618. "sd_keywd : VALUE_TYPE",
  619. "sd_keywd : SPECIALIZATION_OF",
  620. "sd_keywd : RELATIONS",
  621. "sd_keywd : ATTRIBUTES",
  622. "sd_keywd : MESSAGES",
  623. "start_sdefs : schema_def_components",
  624. "schema_def_components : schema_defs",
  625. "schema_def_components : forward_slot_decls",
  626. "schema_def_components : schema_def_components schema_defs",
  627. "schema_def_components : schema_def_components forward_slot_decls",
  628. "schema_defs : schema_def",
  629. "schema_defs : schema_defs schema_def",
  630. "forward_slot_decls : forward_slot_def",
  631. "forward_slot_decls : forward_slot_decls forward_slot_def",
  632. "$$1 :",
  633. "forward_slot_def : DECLARE_ATTRIBUTE_SLOTS $$1 '{' fwd_attribute_slot_decl '}'",
  634. "forward_slot_def : DECLARE_ATTRIBUTE_SLOTS",
  635. "$$2 :",
  636. "forward_slot_def : DECLARE_RELATION_SLOTS $$2 '{' fwd_relation_slot_decl '}'",
  637. "forward_slot_def : DECLARE_RELATION_SLOTS",
  638. "$$3 :",
  639. "forward_slot_def : DECLARE_MESSAGE_SLOTS $$3 '{' fwd_message_slot_decl '}'",
  640. "forward_slot_def : DECLARE_MESSAGE_SLOTS",
  641. "fwd_attribute_slot_decl : fwd_att_slot",
  642. "fwd_attribute_slot_decl : fwd_attribute_slot_decl fwd_att_slot",
  643. "fwd_relation_slot_decl : fwd_rel_slot",
  644. "fwd_relation_slot_decl : fwd_relation_slot_decl fwd_rel_slot",
  645. "fwd_message_slot_decl : fwd_msg_slot",
  646. "fwd_message_slot_decl : fwd_message_slot_decl fwd_msg_slot",
  647. "fwd_att_slot : card value_type slot_name ';'",
  648. "fwd_rel_slot : '(' card rel_slot_name ';' inverse_card inverse_slot_name ')'",
  649. "fwd_msg_slot : msg_slot_name ';'",
  650. "schema_def :",
  651. "schema_def : class_def",
  652. "schema_def : instance_def",
  653. "schema_def : meta_knowledge_instance_def",
  654. "schema_def : slot_control_def",
  655. "schema_def : error",
  656. "class_def : class_schema '{'",
  657. "class_def : class_schema sd_keywd",
  658. "class_def : class_schema class_name sd_keywd",
  659. "class_def : class_schema class_name class_def_body",
  660. "class_schema : CLASS_SCHEMA",
  661. "$$4 :",
  662. "class_def_body : '{' subclass_of class_decl $$4 meta_schema slot_specs '}'",
  663. "instance_def : instance_schema optional_instance_name instance_def_body",
  664. "instance_schema : INSTANCE_SCHEMA",
  665. "$$5 :",
  666. "instance_def_body : '{' instance_of inst_decl $$5 meta_schema slot_specs '}'",
  667. "meta_knowledge_instance_def : META_KNOWLEDGE_INSTANCE meta_knowledge_instance_name instance_def_body",
  668. "slot_control_def : base_slot_def",
  669. "slot_control_def : slot_specialization_def",
  670. "base_slot_def : base_slot_type '{'",
  671. "base_slot_def : base_slot_type sd_keywd",
  672. "base_slot_def : base_slot_type class_name sd_keywd",
  673. "base_slot_def : base_slot_type class_name base_slot_class_body",
  674. "base_slot_type : BASE_RELATION_CLASS",
  675. "base_slot_type : BASE_ATTRIBUTE_CLASS",
  676. "base_slot_type : BASE_MESSAGE_CLASS",
  677. "$$6 :",
  678. "base_slot_class_body : '{' subclass_of val_type_spec card_spec inverse_relation class_decl $$6 meta_schema slot_specs '}'",
  679. "slot_specialization_def : specialization_type '{'",
  680. "slot_specialization_def : specialization_type sd_keywd",
  681. "slot_specialization_def : specialization_type class_name sd_keywd",
  682. "slot_specialization_def : specialization_type class_name specialization_def_body",
  683. "specialization_type : ATTRIBUTE_SPECIALIZATION_CLASS",
  684. "specialization_type : RELATION_SPECIALIZATION_CLASS",
  685. "specialization_type : MESSAGE_SPECIALIZATION_CLASS",
  686. "$$7 :",
  687. "specialization_def_body : '{' subclass_of specialization_of class_decl $$7 meta_schema slot_specs '}'",
  688. "subclass_of : SUBCLASS_OF superclass_list sd_keywd",
  689. "subclass_of : SUBCLASS_OF superclass_list ';'",
  690. "subclass_of : SUBCLASS_OF '}'",
  691. "class_decl :",
  692. "class_decl : DECLARATIONS class_declarations ';'",
  693. "class_decl : DECLARATIONS class_declarations sd_keywd",
  694. "class_decl : DECLARATIONS class_declarations '}'",
  695. "meta_schema :",
  696. "meta_schema : META_SCHEMA meta_knowledge_spec ';'",
  697. "instance_of : INSTANCE_OF inst_of_class_name sd_keywd",
  698. "instance_of : INSTANCE_OF inst_of_class_name ';'",
  699. "instance_of : INSTANCE_OF '}'",
  700. "inst_decl :",
  701. "inst_decl : DECLARATIONS inst_declarations ';'",
  702. "inst_decl : DECLARATIONS '{' inst_declarations '}' ';'",
  703. "inst_decl : DECLARATIONS inst_declarations sd_keywd",
  704. "inst_decl : DECLARATIONS inst_declarations '}'",
  705. "inverse_relation :",
  706. "inverse_relation : INVERSE_RELATION inverse_relation_spec ';'",
  707. "val_type_spec :",
  708. "val_type_spec : VALUE_TYPE sc_value_type ';'",
  709. "card_spec :",
  710. "card_spec : CARDINALITY sc_card ';'",
  711. "sc_card : MULTIPLE",
  712. "sc_card : SINGLE",
  713. "sc_card : garbage",
  714. "specialization_of : SPECIALIZATION_OF class_name ';'",
  715. "sc_value_type : VT_schar",
  716. "sc_value_type : VT_char",
  717. "sc_value_type : VT_uchar",
  718. "sc_value_type : VT_short",
  719. "sc_value_type : VT_int",
  720. "sc_value_type : VT_long",
  721. "sc_value_type : VT_ushort",
  722. "sc_value_type : VT_uint",
  723. "sc_value_type : VT_ulong",
  724. "sc_value_type : VT_float",
  725. "sc_value_type : VT_double",
  726. "sc_value_type : VT_void_ptr",
  727. "sc_value_type : VT_kb_STRING",
  728. "sc_value_type : VT_kb_ANY",
  729. "sc_value_type : VT_kb_SLOT_ID",
  730. "sc_value_type : VT_kb_SCHEMA_ID",
  731. "sc_value_type : VT_kb_FUNCTION_ID",
  732. "sc_value_type : VT_kb_BOOLEAN",
  733. "sc_value_type :",
  734. "superclass_list :",
  735. "superclass_list : superclass_name",
  736. "superclass_list : '{' superclass_name_seq '}'",
  737. "superclass_name_seq : superclass_name",
  738. "superclass_name_seq : superclass_name_seq ',' superclass_name",
  739. "superclass_name_seq : superclass_name_seq superclass_name",
  740. "superclass_name : SYSTEM_SCHEMA",
  741. "superclass_name : name_string",
  742. "class_name : SYSTEM_SCHEMA",
  743. "class_name : name_string",
  744. "inst_of_class_name : SYSTEM_SCHEMA",
  745. "inst_of_class_name : name_string",
  746. "optional_instance_name : instance_name",
  747. "optional_instance_name :",
  748. "instance_name : name_string",
  749. "meta_knowledge_instance_name : name_string",
  750. "msg_slot_name : name_string",
  751. "rel_slot_name : name_string",
  752. "slot_name : demon_slot_name",
  753. "slot_name : inheritance_spec_slot_name",
  754. "slot_name : name_string",
  755. "demon_slot_name : KB_BEFORE_GET",
  756. "demon_slot_name : KB_AFTER_GET",
  757. "demon_slot_name : KB_BEFORE_PUT",
  758. "demon_slot_name : KB_AFTER_PUT",
  759. "demon_slot_name : KB_BEFORE_DEL",
  760. "demon_slot_name : KB_AFTER_DEL",
  761. "inheritance_spec_slot_name : KB_INCLUSION_RELATION_SPEC",
  762. "inheritance_spec_slot_name : KB_EXCLUSION_RELATION_SPEC",
  763. "inheritance_spec_slot_name : KB_INCLUSION_ATTRIBUTE_SPEC",
  764. "inheritance_spec_slot_name : KB_EXCLUSION_ATTRIBUTE_SPEC",
  765. "inheritance_spec_slot_name : KB_INCLUSION_MESSAGE_SPEC",
  766. "inheritance_spec_slot_name : KB_EXCLUSION_MESSAGE_SPEC",
  767. "name_string : C_IDENTIFIER",
  768. "name_string : NAME_STRING",
  769. "class_declarations :",
  770. "class_declarations : simple_class_declaration",
  771. "class_declarations : '{' '}'",
  772. "class_declarations : '{' class_decl_seq '}'",
  773. "class_decl_seq : simple_class_declaration",
  774. "class_decl_seq : class_decl_seq ',' simple_class_declaration",
  775. "class_decl_seq : class_decl_seq simple_class_declaration",
  776. "simple_class_declaration : search_order_declaration",
  777. "simple_class_declaration : CONTEXTLESS",
  778. "simple_class_declaration : NO_LINKS_TO_INSTANCES",
  779. "simple_class_declaration : garbage",
  780. "search_order_declaration : SYSTEM_RELATIONS_FIRST",
  781. "search_order_declaration : USER_RELATIONS_FIRST",
  782. "inst_declarations :",
  783. "inst_declarations : CONTEXTLESS",
  784. "inst_declarations : SYSTEM_RELATIONS_FIRST",
  785. "inst_declarations : USER_RELATIONS_FIRST",
  786. "inst_declarations : NO_LINKS_TO_INSTANCES",
  787. "inst_declarations : garbage",
  788. "meta_knowledge_spec : class_name",
  789. "meta_knowledge_spec : '{' class_name ',' meta_knowledge_instance_name '}'",
  790. "inverse_relation_spec : card slot_name",
  791. "inverse_relation_spec : '{' '}'",
  792. "inverse_relation_spec : NULL_VALUE",
  793. "card : MULTIPLE",
  794. "card : SINGLE",
  795. "card :",
  796. "empty :",
  797. "empty : EMPTY",
  798. "slot_specs :",
  799. "slot_specs : slot_specs slot_spec",
  800. "slot_spec : relation_slot_specs",
  801. "slot_spec : attribute_slot_specs",
  802. "slot_spec : message_slot_specs",
  803. "slot_spec : error",
  804. "$$8 :",
  805. "relation_slot_specs : RELATIONS $$8 relation_specs",
  806. "relation_slot_specs : RELATIONS",
  807. "$$9 :",
  808. "attribute_slot_specs : ATTRIBUTES $$9 attribute_specs",
  809. "attribute_slot_specs : ATTRIBUTES",
  810. "$$10 :",
  811. "message_slot_specs : MESSAGES $$10 message_specs",
  812. "message_slot_specs : MESSAGES",
  813. "meta_slot :",
  814. "meta_slot : META_SLOT meta_knowledge_spec ';'",
  815. "slot_control_spec :",
  816. "slot_control_spec : SLOT_CONTROL class_name ';'",
  817. "relation_specs : relation_spec",
  818. "relation_specs : relation_specs relation_spec",
  819. "relation_spec : simple_rel_spec",
  820. "relation_spec : complex_rel_spec",
  821. "relation_spec : error",
  822. "simple_rel_spec : empty card rel_slot_name relation_link_spec ';'",
  823. "complex_rel_spec : '(' simple_rel_spec slot_inverse_relation slot_control_spec meta_slot ')'",
  824. "slot_inverse_relation : INVERSE_RELATION slot_inverse_relation_spec ';'",
  825. "slot_inverse_relation_spec : inverse_card inverse_slot_name",
  826. "slot_inverse_relation_spec : '{' '}'",
  827. "slot_inverse_relation_spec : NULL_VALUE",
  828. "inverse_card : MULTIPLE",
  829. "inverse_card : SINGLE",
  830. "inverse_card :",
  831. "inverse_slot_name : name_string",
  832. "relation_link_spec :",
  833. "relation_link_spec : '=' link",
  834. "relation_link_spec : '=' '{' link_lst '}'",
  835. "link_lst : link",
  836. "link_lst : link_lst ',' link",
  837. "link_lst : link_lst link",
  838. "link : name_string",
  839. "link : '(' name_string META_VALUE meta_knowledge_spec ')'",
  840. "attribute_specs : attribute_spec",
  841. "attribute_specs : attribute_specs attribute_spec",
  842. "attribute_spec : simple_att_spec",
  843. "attribute_spec : complex_att_spec",
  844. "attribute_spec : error",
  845. "$$11 :",
  846. "simple_att_spec : empty card value_type slot_name $$11 att_value_spec ';'",
  847. "complex_att_spec : '(' simple_att_spec slot_control_spec meta_slot ')'",
  848. "value_type : VT_schar",
  849. "value_type : VT_char",
  850. "value_type : VT_uchar",
  851. "value_type : VT_short",
  852. "value_type : VT_int",
  853. "value_type : VT_long",
  854. "value_type : VT_ushort",
  855. "value_type : VT_uint",
  856. "value_type : VT_ulong",
  857. "value_type : VT_float",
  858. "value_type : VT_double",
  859. "value_type : VT_void_ptr",
  860. "value_type : VT_kb_STRING",
  861. "value_type : VT_kb_ANY",
  862. "value_type : VT_kb_SLOT_ID",
  863. "value_type : VT_kb_SCHEMA_ID",
  864. "value_type : VT_kb_FUNCTION_ID",
  865. "value_type : VT_kb_BOOLEAN",
  866. "value_type :",
  867. "att_value_spec :",
  868. "att_value_spec : '=' value",
  869. "att_value_spec : '=' '{' value_seq '}'",
  870. "att_value_spec : '=' NULL_VALUE",
  871. "value_seq :",
  872. "value_seq : value",
  873. "value_seq : value_seq ',' value",
  874. "value_seq : value_seq value",
  875. "value : simple_value",
  876. "value : '(' simple_value META_VALUE meta_knowledge_spec ')'",
  877. "simple_value : NUM",
  878. "simple_value : C_IDENTIFIER '(' ')'",
  879. "simple_value : name_string",
  880. "simple_value : CHAR",
  881. "simple_value : STRING",
  882. "simple_value : SD_TRUE",
  883. "simple_value : SD_FALSE",
  884. "simple_value : ALL_SLOTS",
  885. "simple_value : NO_SLOTS",
  886. "message_specs : message_spec",
  887. "message_specs : message_specs message_spec",
  888. "message_spec : simple_msg_spec",
  889. "message_spec : complex_msg_spec",
  890. "message_spec : error",
  891. "$$12 :",
  892. "simple_msg_spec : empty msg_slot_name $$12 msg_method_spec ';'",
  893. "complex_msg_spec : '(' simple_msg_spec slot_control_spec meta_slot ')'",
  894. "msg_method_spec :",
  895. "msg_method_spec : '=' method_spec",
  896. "msg_method_spec : '=' '{' method_spec '}'",
  897. "msg_method_spec : '=' '{' method_spec ','",
  898. "msg_method_spec : '=' '{' method_spec method_spec",
  899. "msg_method_spec : '=' NULL_VALUE",
  900. "msg_method_spec : '=' '{' '}'",
  901. "method_spec : method_function_id",
  902. "method_spec : '(' method_function_id META_VALUE meta_knowledge_spec ')'",
  903. "method_function_id : C_IDENTIFIER '(' ')'",
  904. "method_function_id : C_IDENTIFIER",
  905. };
  906. #endif
  907. #ifndef YYSTYPE
  908. typedef int YYSTYPE;
  909. #endif
  910. #define yyclearin (yychar=(-1))
  911. #define yyerrok (yyerrflag=0)
  912. #ifndef YYSTACKSIZE
  913. #ifdef YYMAXDEPTH
  914. #define YYSTACKSIZE YYMAXDEPTH
  915. #else
  916. #define YYSTACKSIZE 300
  917. #endif
  918. #endif
  919. int yydebug;
  920. int yynerrs;
  921. int yyerrflag;
  922. int yychar;
  923. short *yyssp;
  924. YYSTYPE *yyvsp;
  925. YYSTYPE yyval;
  926. YYSTYPE yylval;
  927. #define yystacksize YYSTACKSIZE
  928. short yyss[YYSTACKSIZE];
  929. YYSTYPE yyvs[YYSTACKSIZE];
  930. #line 2127 "sdefyacc.y"
  931.  
  932. void yyerror( char* s )                       /* Called by yyparse on error */
  933. {
  934.     if ( CURRENT_INFO->sdef_mode() != REGRESSION_MODE )
  935.     {
  936.     CERR << "\nLine " << CURRENT_INFO->linenum() << ": " << s ;
  937.     }
  938. }
  939. // END yyerror()
  940.  
  941.  
  942.  
  943.  
  944.  
  945.  
  946. #line 947 "y_tab.c"
  947. #define YYABORT goto yyabort
  948. #define YYACCEPT goto yyaccept
  949. #define YYERROR goto yyerrlab
  950. int
  951. yyparse()
  952. {
  953.     register int yym, yyn, yystate;
  954. #if YYDEBUG
  955.     register char *yys;
  956.     extern char *getenv();
  957.  
  958.     if (yys = getenv("YYDEBUG"))
  959.     {
  960.         yyn = *yys;
  961.         if (yyn >= '0' && yyn <= '9')
  962.             yydebug = yyn - '0';
  963.     }
  964. #endif
  965.  
  966.     yynerrs = 0;
  967.     yyerrflag = 0;
  968.     yychar = (-1);
  969.  
  970.     yyssp = yyss;
  971.     yyvsp = yyvs;
  972.     *yyssp = yystate = 0;
  973.  
  974. yyloop:
  975.     if (yyn = yydefred[yystate]) goto yyreduce;
  976.     if (yychar < 0)
  977.     {
  978.         if ((yychar = yylex()) < 0) yychar = 0;
  979. #if YYDEBUG
  980.         if (yydebug)
  981.         {
  982.             yys = 0;
  983.             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  984.             if (!yys) yys = "illegal-symbol";
  985.             printf("yydebug: state %d, reading %d (%s)\n", yystate,
  986.                     yychar, yys);
  987.         }
  988. #endif
  989.     }
  990.     if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
  991.             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
  992.     {
  993. #if YYDEBUG
  994.         if (yydebug)
  995.             printf("yydebug: state %d, shifting to state %d\n",
  996.                     yystate, yytable[yyn]);
  997. #endif
  998.         if (yyssp >= yyss + yystacksize - 1)
  999.         {
  1000.             goto yyoverflow;
  1001.         }
  1002.         *++yyssp = yystate = yytable[yyn];
  1003.         *++yyvsp = yylval;
  1004.         yychar = (-1);
  1005.         if (yyerrflag > 0)  --yyerrflag;
  1006.         goto yyloop;
  1007.     }
  1008.     if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
  1009.             yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
  1010.     {
  1011.         yyn = yytable[yyn];
  1012.         goto yyreduce;
  1013.     }
  1014.     if (yyerrflag) goto yyinrecovery;
  1015. #ifdef lint
  1016.     goto yynewerror;
  1017. #endif
  1018. yynewerror:
  1019.     yyerror("syntax error");
  1020. #ifdef lint
  1021.     goto yyerrlab;
  1022. #endif
  1023. yyerrlab:
  1024.     ++yynerrs;
  1025. yyinrecovery:
  1026.     if (yyerrflag < 3)
  1027.     {
  1028.         yyerrflag = 3;
  1029.         for (;;)
  1030.         {
  1031.             if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
  1032.                     yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
  1033.             {
  1034. #if YYDEBUG
  1035.                 if (yydebug)
  1036.                     printf("yydebug: state %d, error recovery shifting\
  1037.  to state %d\n", *yyssp, yytable[yyn]);
  1038. #endif
  1039.                 if (yyssp >= yyss + yystacksize - 1)
  1040.                 {
  1041.                     goto yyoverflow;
  1042.                 }
  1043.                 *++yyssp = yystate = yytable[yyn];
  1044.                 *++yyvsp = yylval;
  1045.                 goto yyloop;
  1046.             }
  1047.             else
  1048.             {
  1049. #if YYDEBUG
  1050.                 if (yydebug)
  1051.                     printf("yydebug: error recovery discarding state %d\n",
  1052.                             *yyssp);
  1053. #endif
  1054.                 if (yyssp <= yyss) goto yyabort;
  1055.                 --yyssp;
  1056.                 --yyvsp;
  1057.             }
  1058.         }
  1059.     }
  1060.     else
  1061.     {
  1062.         if (yychar == 0) goto yyabort;
  1063. #if YYDEBUG
  1064.         if (yydebug)
  1065.         {
  1066.             yys = 0;
  1067.             if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  1068.             if (!yys) yys = "illegal-symbol";
  1069.             printf("yydebug: state %d, error recovery discards token %d (%s)\n",
  1070.                     yystate, yychar, yys);
  1071.         }
  1072. #endif
  1073.         yychar = (-1);
  1074.         goto yyloop;
  1075.     }
  1076. yyreduce:
  1077. #if YYDEBUG
  1078.     if (yydebug)
  1079.         printf("yydebug: state %d, reducing by rule %d (%s)\n",
  1080.                 yystate, yyn, yyrule[yyn]);
  1081. #endif
  1082.     yym = yylen[yyn];
  1083.     yyval = yyvsp[1-yym];
  1084.     switch (yyn)
  1085.     {
  1086. case 14:
  1087. #line 309 "sdefyacc.y"
  1088. {
  1089.                 CLEANUP();
  1090.             }
  1091. break;
  1092. case 23:
  1093. #line 333 "sdefyacc.y"
  1094. {
  1095.                 SET_SLOT_TYPE( KB_ATTRIBUTE );
  1096.             }
  1097. break;
  1098. case 24:
  1099. #line 337 "sdefyacc.y"
  1100. {
  1101.                 FOUND( "fwd_attribute_slot_decl" );
  1102.             }
  1103. break;
  1104. case 25:
  1105. #line 341 "sdefyacc.y"
  1106. {
  1107.                 SET_SLOT_TYPE( KB_ATTRIBUTE );
  1108.             }
  1109. break;
  1110. case 26:
  1111. #line 345 "sdefyacc.y"
  1112. {
  1113.                 SET_SLOT_TYPE( KB_RELATION );
  1114.             }
  1115. break;
  1116. case 27:
  1117. #line 349 "sdefyacc.y"
  1118. {
  1119.                 FOUND( "fwd_relation_slot_decl" );
  1120.             }
  1121. break;
  1122. case 28:
  1123. #line 353 "sdefyacc.y"
  1124. {
  1125.                 SET_SLOT_TYPE( KB_RELATION );
  1126.             }
  1127. break;
  1128. case 29:
  1129. #line 357 "sdefyacc.y"
  1130. {
  1131.                 SET_SLOT_TYPE( KB_MESSAGE );
  1132.             }
  1133. break;
  1134. case 30:
  1135. #line 361 "sdefyacc.y"
  1136. {
  1137.                 FOUND( "fwd_message_slot_decl" );
  1138.             }
  1139. break;
  1140. case 31:
  1141. #line 365 "sdefyacc.y"
  1142. {
  1143.                 SET_SLOT_TYPE( KB_MESSAGE )
  1144.             }
  1145. break;
  1146. case 32:
  1147. #line 372 "sdefyacc.y"
  1148. {
  1149.                 FOUND( "fwd_att_slot" );
  1150.             }
  1151. break;
  1152. case 33:
  1153. #line 376 "sdefyacc.y"
  1154. {
  1155.                 FOUND( "fwd_att_slot tail" );
  1156.             }
  1157. break;
  1158. case 34:
  1159. #line 383 "sdefyacc.y"
  1160. {
  1161.                 FOUND( "fwd_rel_slot" );
  1162.             }
  1163. break;
  1164. case 35:
  1165. #line 387 "sdefyacc.y"
  1166. {
  1167.                 FOUND( "fwd_rel_slot tail" );
  1168.             }
  1169. break;
  1170. case 36:
  1171. #line 394 "sdefyacc.y"
  1172. {
  1173.                 FOUND( "fwd_msg_slot" );
  1174.             }
  1175. break;
  1176. case 37:
  1177. #line 398 "sdefyacc.y"
  1178. {
  1179.                 FOUND( "fwd_msg_slot tail" );
  1180.             }
  1181. break;
  1182. case 42:
  1183. #line 456 "sdefyacc.y"
  1184. {  
  1185.                 FND_SCHEMA_DEF();
  1186.                 RESET_SDEF();
  1187.             }
  1188. break;
  1189. case 43:
  1190. #line 461 "sdefyacc.y"
  1191. {  
  1192.                 FND_SCHEMA_DEF();
  1193.                 RESET_SDEF();
  1194.             }
  1195. break;
  1196. case 44:
  1197. #line 466 "sdefyacc.y"
  1198. {  
  1199.                 FND_SCHEMA_DEF();
  1200.                 RESET_SDEF();
  1201.             }
  1202. break;
  1203. case 45:
  1204. #line 471 "sdefyacc.y"
  1205. {  
  1206.                 FND_SCHEMA_DEF();
  1207.                 ACTION( "STUB: compile slot control" );
  1208.                 RESET_SDEF();
  1209.             }
  1210. break;
  1211. case 46:
  1212. #line 477 "sdefyacc.y"
  1213. {
  1214.                 UNWIND_TO_SCHEMA_DEF();
  1215.                 RESET_SDEF();
  1216.             }
  1217. break;
  1218. case 47:
  1219. #line 488 "sdefyacc.y"
  1220. {
  1221.                 NO_SCHEMA_NAME_ERR();
  1222.             }
  1223. break;
  1224. case 48:
  1225. #line 492 "sdefyacc.y"
  1226. {
  1227.                 sd_signal_error( MISSING_LBRACE_IGNORED_STR );
  1228.                 NO_SCHEMA_NAME_ERR();
  1229.             }
  1230. break;
  1231. case 49:
  1232. #line 497 "sdefyacc.y"
  1233. {
  1234.                 sd_signal_error( MISSING_LBRACE_FATAL_STR );
  1235.                 CURRENT_INFO->put_error_flag( KB_TRUE );
  1236.                 YYERROR;
  1237.             }
  1238. break;
  1239. case 50:
  1240. #line 503 "sdefyacc.y"
  1241. {
  1242.                 CLASS_DEF();
  1243.             }
  1244. break;
  1245. case 51:
  1246. #line 510 "sdefyacc.y"
  1247. {
  1248.                 FND_SCHEMA_TYPE( KB_CLASS_SCHEMA );
  1249.             }
  1250. break;
  1251. case 52:
  1252. #line 519 "sdefyacc.y"
  1253. {
  1254.                 BUILD_CLASS();
  1255.             }
  1256. break;
  1257. case 53:
  1258. #line 523 "sdefyacc.y"
  1259. {
  1260.                 FOUND( "class_def_body" );
  1261.             }
  1262. break;
  1263. case 54:
  1264. #line 535 "sdefyacc.y"
  1265. {
  1266.                 FOUND( "instance_def" );
  1267.             }
  1268. break;
  1269. case 55:
  1270. #line 542 "sdefyacc.y"
  1271. {
  1272.                 FND_SCHEMA_TYPE( KB_INSTANCE_SCHEMA );
  1273.             }
  1274. break;
  1275. case 56:
  1276. #line 550 "sdefyacc.y"
  1277. {
  1278.                 BUILD_INSTANCE();
  1279.             }
  1280. break;
  1281. case 57:
  1282. #line 554 "sdefyacc.y"
  1283. {
  1284.                 FOUND( "instance_def_body");
  1285.             }
  1286. break;
  1287. case 58:
  1288. #line 567 "sdefyacc.y"
  1289. {
  1290.                 FOUND( "meta_knowledge_instance_def" );
  1291.             }
  1292. break;
  1293. case 59:
  1294. #line 580 "sdefyacc.y"
  1295. {
  1296.                 FOUND( "slot_control_def" );
  1297.             }
  1298. break;
  1299. case 60:
  1300. #line 584 "sdefyacc.y"
  1301. {
  1302.                 FOUND( "slot_control_def" );
  1303.             }
  1304. break;
  1305. case 61:
  1306. #line 592 "sdefyacc.y"
  1307. {
  1308.                 NO_SCHEMA_NAME_ERR();
  1309.             }
  1310. break;
  1311. case 62:
  1312. #line 596 "sdefyacc.y"
  1313. {
  1314.                 sd_signal_error( MISSING_LBRACE_IGNORED_STR );
  1315.                 NO_SCHEMA_NAME_ERR();
  1316.             }
  1317. break;
  1318. case 63:
  1319. #line 601 "sdefyacc.y"
  1320. {
  1321.                 sd_signal_error( MISSING_LBRACE_FATAL_STR );
  1322.                 CURRENT_INFO->put_error_flag( KB_TRUE );
  1323.                 YYERROR;
  1324.             }
  1325. break;
  1326. case 64:
  1327. #line 607 "sdefyacc.y"
  1328. {
  1329.                 FOUND( "base_slot_class" );
  1330.             }
  1331. break;
  1332. case 65:
  1333. #line 614 "sdefyacc.y"
  1334. {
  1335.                 FND_SCHEMA_TYPE( KB_BASE_RELATION_CLASS );
  1336.             }
  1337. break;
  1338. case 66:
  1339. #line 618 "sdefyacc.y"
  1340. {
  1341.                 FND_SCHEMA_TYPE( KB_BASE_ATTRIBUTE_CLASS );
  1342.             }
  1343. break;
  1344. case 67:
  1345. #line 622 "sdefyacc.y"
  1346. {
  1347.                 FND_SCHEMA_TYPE( KB_BASE_MESSAGE_CLASS );
  1348.             }
  1349. break;
  1350. case 68:
  1351. #line 631 "sdefyacc.y"
  1352. {
  1353.                 BUILD_CLASS();
  1354.                 DECLARE_SLOT_CONTROL();
  1355.             }
  1356. break;
  1357. case 69:
  1358. #line 636 "sdefyacc.y"
  1359. {
  1360.                 FOUND( "base_slot_class_body" );
  1361.                 COMPILE_SLOT_CONTROL();
  1362.             }
  1363. break;
  1364. case 70:
  1365. #line 650 "sdefyacc.y"
  1366. {
  1367.                 NO_SCHEMA_NAME_ERR();
  1368.             }
  1369. break;
  1370. case 71:
  1371. #line 654 "sdefyacc.y"
  1372. {
  1373.                 sd_signal_error( MISSING_LBRACE_IGNORED_STR );
  1374.                 NO_SCHEMA_NAME_ERR();
  1375.             }
  1376. break;
  1377. case 72:
  1378. #line 659 "sdefyacc.y"
  1379. {
  1380.                 sd_signal_error( MISSING_LBRACE_FATAL_STR );
  1381.                 CURRENT_INFO->put_error_flag( KB_TRUE );
  1382.                 YYERROR;
  1383.             }
  1384. break;
  1385. case 73:
  1386. #line 665 "sdefyacc.y"
  1387. {
  1388.                 FOUND( "slot_specialization_def" );
  1389.             }
  1390. break;
  1391. case 74:
  1392. #line 672 "sdefyacc.y"
  1393. {
  1394.              FND_SCHEMA_TYPE( KB_ATTRIBUTE_SPECIALIZATION_CLASS );
  1395.                 }
  1396. break;
  1397. case 75:
  1398. #line 676 "sdefyacc.y"
  1399. {
  1400.              FND_SCHEMA_TYPE( KB_RELATION_SPECIALIZATION_CLASS );
  1401.                 }
  1402. break;
  1403. case 76:
  1404. #line 680 "sdefyacc.y"
  1405. {
  1406.              FND_SCHEMA_TYPE( KB_MESSAGE_SPECIALIZATION_CLASS );
  1407.                 }
  1408. break;
  1409. case 77:
  1410. #line 687 "sdefyacc.y"
  1411. {
  1412.                 BUILD_CLASS();
  1413.                 DECLARE_SLOT_CONTROL();
  1414.             }
  1415. break;
  1416. case 78:
  1417. #line 692 "sdefyacc.y"
  1418. {
  1419.                 FOUND( "specialization_def_body" );
  1420.                 COMPILE_SLOT_CONTROL();
  1421.             }
  1422. break;
  1423. case 79:
  1424. #line 705 "sdefyacc.y"
  1425. {
  1426.                 MISSING_SEMICOLON();
  1427.             }
  1428. break;
  1429. case 80:
  1430. #line 709 "sdefyacc.y"
  1431. {
  1432.                 FOUND( "subclass_of" );
  1433.             }
  1434. break;
  1435. case 81:
  1436. #line 713 "sdefyacc.y"
  1437. {
  1438.                 sd_signal_error( KBE_NO_SUPERCLASSES );
  1439.                 CURRENT_INFO->put_error_flag( KB_TRUE );
  1440.                 YYERROR;
  1441.             }
  1442. break;
  1443. case 83:
  1444. #line 723 "sdefyacc.y"
  1445. {
  1446.                 FOUND( "class_decl" );
  1447.             }
  1448. break;
  1449. case 84:
  1450. #line 727 "sdefyacc.y"
  1451. {
  1452.                 MISSING_SEMICOLON();
  1453.             }
  1454. break;
  1455. case 85:
  1456. #line 731 "sdefyacc.y"
  1457. {
  1458.                 MISSING_SEMICOLON();
  1459.             }
  1460. break;
  1461. case 87:
  1462. #line 739 "sdefyacc.y"
  1463. {
  1464.                 FOUND( "meta_schema" );
  1465.             }
  1466. break;
  1467. case 88:
  1468. #line 747 "sdefyacc.y"
  1469. {
  1470.                 MISSING_SEMICOLON();
  1471.             }
  1472. break;
  1473. case 89:
  1474. #line 752 "sdefyacc.y"
  1475. {
  1476.                 FOUND( "instance_of" );
  1477.             }
  1478. break;
  1479. case 90:
  1480. #line 756 "sdefyacc.y"
  1481. {
  1482.                 sd_signal_error( KBE_NO_SUPERCLASSES );
  1483.                 CURRENT_INFO->put_error_flag( KB_TRUE );
  1484.                 YYERROR;
  1485.             }
  1486. break;
  1487. case 92:
  1488. #line 766 "sdefyacc.y"
  1489. {
  1490.                 FOUND( "inst_decl" );
  1491.             }
  1492. break;
  1493. case 93:
  1494. #line 770 "sdefyacc.y"
  1495. {
  1496.                 FOUND( "inst_decl" );
  1497.             }
  1498. break;
  1499. case 94:
  1500. #line 774 "sdefyacc.y"
  1501. {
  1502.                 MISSING_SEMICOLON();
  1503.             }
  1504. break;
  1505. case 95:
  1506. #line 778 "sdefyacc.y"
  1507. {
  1508.                 MISSING_SEMICOLON();
  1509.             }
  1510. break;
  1511. case 96:
  1512. #line 786 "sdefyacc.y"
  1513. {
  1514.                 INV_RELATION_EMPTY();
  1515.             }
  1516. break;
  1517. case 97:
  1518. #line 790 "sdefyacc.y"
  1519. {
  1520.                 INV_RELATION();
  1521.             }
  1522. break;
  1523. case 98:
  1524. #line 798 "sdefyacc.y"
  1525. {
  1526.                 VAL_TYPE_SPEC_EMPTY();
  1527.             }
  1528. break;
  1529. case 99:
  1530. #line 802 "sdefyacc.y"
  1531. {
  1532.                 VAL_TYPE_SPEC();
  1533.             }
  1534. break;
  1535. case 100:
  1536. #line 809 "sdefyacc.y"
  1537. {
  1538.                 CARD_SPEC_EMPTY();
  1539.             }
  1540. break;
  1541. case 101:
  1542. #line 813 "sdefyacc.y"
  1543. {
  1544.                 CARD_SPEC();
  1545.             }
  1546. break;
  1547. case 102:
  1548. #line 820 "sdefyacc.y"
  1549. {
  1550.                 PUT_SC_MULTIPLE_CARD();
  1551.             }
  1552. break;
  1553. case 103:
  1554. #line 824 "sdefyacc.y"
  1555. {
  1556.                 PUT_SC_SINGLE_CARD();
  1557.             }
  1558. break;
  1559. case 104:
  1560. #line 828 "sdefyacc.y"
  1561. {
  1562.                 sd_signal_error( KBE_BAD_CARDINALITY );
  1563.                 ACTION( "Using KB_SINGLE for cardinality" );
  1564.                 PUT_SC_SINGLE_CARD();
  1565.             }
  1566. break;
  1567. case 105:
  1568. #line 837 "sdefyacc.y"
  1569. {
  1570.                 FOUND( "specialization_of" );
  1571.             }
  1572. break;
  1573. case 106:
  1574. #line 846 "sdefyacc.y"
  1575.                 CURRENT_SCHEMA->put_value_type( KB_SCHAR_TYPE); 
  1576.             }
  1577. break;
  1578. case 107:
  1579. #line 849 "sdefyacc.y"
  1580.                             CURRENT_SCHEMA->put_value_type( KB_CHAR_TYPE ); 
  1581.             }
  1582. break;
  1583. case 108:
  1584. #line 852 "sdefyacc.y"
  1585. {
  1586.                             CURRENT_SCHEMA->put_value_type( KB_UCHAR_TYPE ); 
  1587.                   }
  1588. break;
  1589. case 109:
  1590. #line 855 "sdefyacc.y"
  1591.                             CURRENT_SCHEMA->put_value_type( KB_SHORT_TYPE ); 
  1592.                   }
  1593. break;
  1594. case 110:
  1595. #line 858 "sdefyacc.y"
  1596.                             CURRENT_SCHEMA->put_value_type( KB_INT_TYPE );
  1597.             }
  1598. break;
  1599. case 111:
  1600. #line 861 "sdefyacc.y"
  1601.                             CURRENT_SCHEMA->put_value_type( KB_LONG_TYPE ); 
  1602.                   }
  1603. break;
  1604. case 112:
  1605. #line 864 "sdefyacc.y"
  1606.                             CURRENT_SCHEMA->put_value_type( KB_USHORT_TYPE ); 
  1607.                   }
  1608. break;
  1609. case 113:
  1610. #line 867 "sdefyacc.y"
  1611.                             CURRENT_SCHEMA->put_value_type( KB_UINT_TYPE ); 
  1612.                   }
  1613. break;
  1614. case 114:
  1615. #line 870 "sdefyacc.y"
  1616.                             CURRENT_SCHEMA->put_value_type( KB_ULONG_TYPE );
  1617.                   }
  1618. break;
  1619. case 115:
  1620. #line 873 "sdefyacc.y"
  1621.                             CURRENT_SCHEMA->put_value_type( KB_FLOAT_TYPE ); 
  1622.                         }
  1623. break;
  1624. case 116:
  1625. #line 876 "sdefyacc.y"
  1626.                             CURRENT_SCHEMA->put_value_type( KB_DOUBLE_TYPE ); 
  1627.                 }
  1628. break;
  1629. case 117:
  1630. #line 879 "sdefyacc.y"
  1631.                           CURRENT_SCHEMA->put_value_type( KB_VOID_PTR_TYPE ); 
  1632.                 }
  1633. break;
  1634. case 118:
  1635. #line 882 "sdefyacc.y"
  1636.                             CURRENT_SCHEMA->put_value_type( KB_STRING_TYPE ); 
  1637.                         }
  1638. break;
  1639. case 119:
  1640. #line 885 "sdefyacc.y"
  1641.                             CURRENT_SCHEMA->put_value_type( KB_ANY_TYPE ); 
  1642.                 }
  1643. break;
  1644. case 120:
  1645. #line 888 "sdefyacc.y"
  1646.                             CURRENT_SCHEMA->put_value_type( KB_SLOT_ID_TYPE ); 
  1647.                 }
  1648. break;
  1649. case 121:
  1650. #line 891 "sdefyacc.y"
  1651.                           CURRENT_SCHEMA->put_value_type( KB_SCHEMA_ID_TYPE ); 
  1652.                 }
  1653. break;
  1654. case 122:
  1655. #line 894 "sdefyacc.y"
  1656.                          CURRENT_SCHEMA->put_value_type( KB_FUNCTION_ID_TYPE );
  1657.                 }
  1658. break;
  1659. case 123:
  1660. #line 897 "sdefyacc.y"
  1661. {
  1662.                       CURRENT_SCHEMA->put_value_type( KB_BOOLEAN_TYPE );
  1663.                         }
  1664. break;
  1665. case 124:
  1666. #line 900 "sdefyacc.y"
  1667.                             CURRENT_SCHEMA->put_value_type( RK_NULL_TYPE );  
  1668.                 }
  1669. break;
  1670. case 125:
  1671. #line 953 "sdefyacc.y"
  1672. {
  1673.                 sd_signal_error( KBE_NO_SUPERCLASSES );
  1674.                 YYERROR;
  1675.             }
  1676. break;
  1677. case 130:
  1678. #line 966 "sdefyacc.y"
  1679. {
  1680.                 SUPERSEQ_COMMA_MISSING();
  1681.             }
  1682. break;
  1683. case 131:
  1684. #line 974 "sdefyacc.y"
  1685. {
  1686.                 SUPERCLASS_NAME( yyval  );
  1687.             }
  1688. break;
  1689. case 132:
  1690. #line 978 "sdefyacc.y"
  1691. {
  1692.                 SUPERCLASS_NAME( yyval  );
  1693.             }
  1694. break;
  1695. case 133:
  1696. #line 986 "sdefyacc.y"
  1697. {
  1698.                 sd_signal_error( KBE_SYSTEM_SCHEMA );
  1699.                 CURRENT_INFO->put_error_flag( KB_TRUE );
  1700.                 YYERROR;
  1701.             }
  1702. break;
  1703. case 134:
  1704. #line 992 "sdefyacc.y"
  1705. {
  1706.                 CHECK_CLASS_NAME( yyvsp[0] );
  1707.             }
  1708. break;
  1709. case 135:
  1710. #line 1000 "sdefyacc.y"
  1711. {
  1712.                 sd_signal_error( KBE_SYSTEM_SCHEMA );
  1713.                 CURRENT_INFO->put_error_flag( KB_TRUE );
  1714.                 YYERROR;
  1715.             }
  1716. break;
  1717. case 136:
  1718. #line 1006 "sdefyacc.y"
  1719. {
  1720.                 SUPERCLASS_NAME( yyvsp[0] );
  1721.             }
  1722. break;
  1723. case 138:
  1724. #line 1017 "sdefyacc.y"
  1725. {
  1726.                 EMPTY_INSTANCE_NAME();
  1727.             }
  1728. break;
  1729. case 139:
  1730. #line 1025 "sdefyacc.y"
  1731. {
  1732.                 INSTANCE_NAME( yyvsp[0] );
  1733.             }
  1734. break;
  1735. case 140:
  1736. #line 1032 "sdefyacc.y"
  1737. {
  1738.                 METAK_INSTANCE_NAME( yyvsp[0] );
  1739.             }
  1740. break;
  1741. case 141:
  1742. #line 1040 "sdefyacc.y"
  1743. {
  1744.                 FOUND( "msg_slot_name " );
  1745. #ifdef SD_ACTION
  1746.                 CERR << " " << yyvsp[0];
  1747. #endif
  1748.                 CHECK_SLOT_NAME( yyvsp[0] );
  1749.                 PUT_SLOT_NAME( yyvsp[0] );
  1750.             }
  1751. break;
  1752. case 142:
  1753. #line 1052 "sdefyacc.y"
  1754. {
  1755.                 FOUND( "rel_slot_name " );
  1756. #ifdef SD_ACTION
  1757.                 CERR << " " << yyvsp[0];
  1758. #endif
  1759.                 CHECK_SLOT_NAME( yyvsp[0] );
  1760.                 PUT_SLOT_NAME( yyvsp[0] );
  1761.             }
  1762. break;
  1763. case 143:
  1764. #line 1065 "sdefyacc.y"
  1765. {
  1766.                 DEMON_SLOT_NAME();
  1767.             }
  1768. break;
  1769. case 144:
  1770. #line 1069 "sdefyacc.y"
  1771. {
  1772.                 INH_SPEC_SLOT_NAME();
  1773.             }
  1774. break;
  1775. case 145:
  1776. #line 1073 "sdefyacc.y"
  1777. {
  1778.                 FOUND( "slot_name" );
  1779. #ifdef SD_ACTION
  1780.                 CERR << " " << yyvsp[0];
  1781. #endif
  1782.                 CHECK_SLOT_NAME( yyvsp[0] );
  1783.                 PUT_SLOT_NAME( yyvsp[0] );
  1784.             }
  1785. break;
  1786. case 146:
  1787. #line 1086 "sdefyacc.y"
  1788. {
  1789.                 FOUND( "demon slot name" );
  1790. #ifdef SD_ACTION
  1791.                 CERR << " " << yyvsp[0];
  1792. #endif
  1793.                 SET_DEMON_TYPE( yyvsp[0] );
  1794.                 PUT_SLOT_NAME( yyvsp[0] );
  1795.             }
  1796. break;
  1797. case 147:
  1798. #line 1095 "sdefyacc.y"
  1799. {
  1800.                 FOUND( "demon slot name" );
  1801. #ifdef SD_ACTION
  1802.                 CERR << " " << yyvsp[0];
  1803. #endif
  1804.                 SET_DEMON_TYPE( yyvsp[0] );
  1805.                 PUT_SLOT_NAME( yyvsp[0] );
  1806.             }
  1807. break;
  1808. case 148:
  1809. #line 1104 "sdefyacc.y"
  1810. {
  1811.                 FOUND( "demon slot name" );
  1812. #ifdef SD_ACTION
  1813.                 CERR << " " << yyvsp[0];
  1814. #endif
  1815.                 SET_DEMON_TYPE( yyvsp[0] );
  1816.                 PUT_SLOT_NAME( yyvsp[0] );
  1817.             }
  1818. break;
  1819. case 149:
  1820. #line 1113 "sdefyacc.y"
  1821. {
  1822.                 FOUND( "demon slot name" );
  1823. #ifdef SD_ACTION
  1824.                 CERR << " " << yyvsp[0];
  1825. #endif
  1826.                 SET_DEMON_TYPE( yyvsp[0] );
  1827.                 PUT_SLOT_NAME( yyvsp[0] );
  1828.             }
  1829. break;
  1830. case 150:
  1831. #line 1122 "sdefyacc.y"
  1832. {
  1833.                 FOUND( "demon slot name" );
  1834. #ifdef SD_ACTION
  1835.                 CERR << " " << yyvsp[0];
  1836. #endif
  1837.                 SET_DEMON_TYPE( yyvsp[0] );
  1838.                 PUT_SLOT_NAME( yyvsp[0] );
  1839.             }
  1840. break;
  1841. case 151:
  1842. #line 1131 "sdefyacc.y"
  1843. {
  1844.                 FOUND( "demon slot name" );
  1845. #ifdef SD_ACTION
  1846.                 CERR << " " << yyvsp[0];
  1847. #endif
  1848.                 SET_DEMON_TYPE( yyvsp[0] );
  1849.                 PUT_SLOT_NAME( yyvsp[0] );
  1850.             }
  1851. break;
  1852. case 158:
  1853. #line 1153 "sdefyacc.y"
  1854. {
  1855.                 FND_NAME_STRING( yyval , yyvsp[0] );
  1856.             }
  1857. break;
  1858. case 159:
  1859. #line 1157 "sdefyacc.y"
  1860. {
  1861.                 FND_NAME_STRING( yyval , yyvsp[0] );
  1862.             }
  1863. break;
  1864. case 166:
  1865. #line 1217 "sdefyacc.y"
  1866. {
  1867.                 CLASS_DECL_COMMA_MISSING();
  1868.             }
  1869. break;
  1870. case 168:
  1871. #line 1231 "sdefyacc.y"
  1872. {
  1873.                 ADD_CONTEXTLESS();
  1874.             }
  1875. break;
  1876. case 169:
  1877. #line 1235 "sdefyacc.y"
  1878. {
  1879.                 ADD_NO_LINKS();
  1880.             }
  1881. break;
  1882. case 170:
  1883. #line 1239 "sdefyacc.y"
  1884. {
  1885.                 sd_signal_error( KBE_BAD_DECLARATION );
  1886.                 ACTION( "Skipping this declaration" );
  1887.             }
  1888. break;
  1889. case 171:
  1890. #line 1247 "sdefyacc.y"
  1891. {
  1892.                 FOUND( "search_order: system_relations_first " );
  1893.                 ADD_SEARCH_ORDER( KB_SYSTEM_RELATIONS_FIRST );
  1894.             }
  1895. break;
  1896. case 172:
  1897. #line 1252 "sdefyacc.y"
  1898. {
  1899.                 FOUND( "search_order: user_relations_first " );
  1900.                 ADD_SEARCH_ORDER( KB_USER_RELATIONS_FIRST );
  1901.             }
  1902. break;
  1903. case 174:
  1904. #line 1262 "sdefyacc.y"
  1905. {
  1906.                 ADD_CONTEXTLESS();
  1907.             }
  1908. break;
  1909. case 175:
  1910. #line 1266 "sdefyacc.y"
  1911. {
  1912.                 sd_signal_warning( KBW_INVALID_DECLARATION );
  1913.                 ACTION( "Skipping this declaration" );
  1914.             }
  1915. break;
  1916. case 176:
  1917. #line 1271 "sdefyacc.y"
  1918. {
  1919.                 sd_signal_warning( KBW_INVALID_DECLARATION );
  1920.                 ACTION( "Skipping this declaration" );
  1921.             }
  1922. break;
  1923. case 177:
  1924. #line 1276 "sdefyacc.y"
  1925. {
  1926.                 sd_signal_warning( KBW_INVALID_DECLARATION );
  1927.                 ACTION( "Skipping this declaration" );
  1928.             }
  1929. break;
  1930. case 178:
  1931. #line 1281 "sdefyacc.y"
  1932. {
  1933.                 sd_signal_error( KBE_BAD_DECLARATION );
  1934.                 ACTION( "Skipping this declaration" );
  1935.             }
  1936. break;
  1937. case 179:
  1938. #line 1290 "sdefyacc.y"
  1939. {
  1940.                 FOUND( "meta_knowledge_spec" );
  1941.             }
  1942. break;
  1943. case 180:
  1944. #line 1294 "sdefyacc.y"
  1945. {
  1946.                 FOUND( "meta_knowledge_spec" );
  1947.             }
  1948. break;
  1949. case 181:
  1950. #line 1302 "sdefyacc.y"
  1951. {
  1952.                 FOUND( "inv_rel_spec" );
  1953.             }
  1954. break;
  1955. case 182:
  1956. #line 1306 "sdefyacc.y"
  1957. {
  1958.                 FOUND( "inv_rel_spec" );
  1959.             }
  1960. break;
  1961. case 183:
  1962. #line 1310 "sdefyacc.y"
  1963. {
  1964.                 FOUND( "inv_rel_spec" );
  1965.             }
  1966. break;
  1967. case 184:
  1968. #line 1318 "sdefyacc.y"
  1969. {
  1970.                 PUT_CARDINALITY( KB_MULTIPLE );
  1971.             }
  1972. break;
  1973. case 185:
  1974. #line 1322 "sdefyacc.y"
  1975. {
  1976.                 PUT_CARDINALITY( KB_SINGLE );
  1977.             }
  1978. break;
  1979. case 186:
  1980. #line 1326 "sdefyacc.y"
  1981. {
  1982.                 PUT_NULL_CARDINALITY();
  1983.             }
  1984. break;
  1985. case 188:
  1986. #line 1334 "sdefyacc.y"
  1987. {
  1988.                 MARK_EMPTY();
  1989.             }
  1990. break;
  1991. case 190:
  1992. #line 1387 "sdefyacc.y"
  1993. {
  1994.                 SLOT_SPECS();
  1995.             }
  1996. break;
  1997. case 191:
  1998. #line 1394 "sdefyacc.y"
  1999. {
  2000.                 RELATION_SLOT_SPECS();
  2001.             }
  2002. break;
  2003. case 192:
  2004. #line 1398 "sdefyacc.y"
  2005. {
  2006.                 ATTRIBUTE_SLOT_SPECS();
  2007.             }
  2008. break;
  2009. case 193:
  2010. #line 1402 "sdefyacc.y"
  2011. {
  2012.                 MESSAGE_SLOT_SPECS();
  2013.             }
  2014. break;
  2015. case 194:
  2016. #line 1406 "sdefyacc.y"
  2017. {
  2018.                 /**
  2019.                  ** STUB: might be able to figure a way
  2020.                  ** to signal this under schema_def: error
  2021.                  ** STUB: this doesn't work --see known_bugs.txt 7
  2022.                  ** No error gets generated at this level.
  2023.                  **/
  2024.                 sd_signal_error( KBE_BAD_SLOT_KEYWORD );
  2025.                 CURRENT_INFO->put_error_flag( KB_TRUE );
  2026.                 yyerrok;
  2027.                 yyclearin;
  2028.                 YYERROR;
  2029.             }
  2030. break;
  2031. case 195:
  2032. #line 1423 "sdefyacc.y"
  2033. { SET_SLOT_TYPE( KB_RELATION ); }
  2034. break;
  2035. case 196:
  2036. #line 1424 "sdefyacc.y"
  2037. {
  2038.                 SLOT_RELATIONS_WITH_SPEC();
  2039.             }
  2040. break;
  2041. case 197:
  2042. #line 1428 "sdefyacc.y"
  2043. {
  2044.                 SET_SLOT_TYPE( KB_RELATION );
  2045.             }
  2046. break;
  2047. case 198:
  2048. #line 1435 "sdefyacc.y"
  2049. { SET_SLOT_TYPE( KB_ATTRIBUTE ); }
  2050. break;
  2051. case 199:
  2052. #line 1436 "sdefyacc.y"
  2053. {
  2054.                 SLOT_ATTRIBUTES_WITH_SPEC();
  2055.             }
  2056. break;
  2057. case 200:
  2058. #line 1440 "sdefyacc.y"
  2059. {
  2060.                 SET_SLOT_TYPE( KB_ATTRIBUTE );
  2061.             }
  2062. break;
  2063. case 201:
  2064. #line 1447 "sdefyacc.y"
  2065. { SET_SLOT_TYPE( KB_MESSAGE ); }
  2066. break;
  2067. case 202:
  2068. #line 1448 "sdefyacc.y"
  2069. {
  2070.                 SLOT_MESSAGES_WITH_SPEC();
  2071.             }
  2072. break;
  2073. case 203:
  2074. #line 1452 "sdefyacc.y"
  2075. {
  2076.                 SET_SLOT_TYPE( KB_MESSAGE );
  2077.             }
  2078. break;
  2079. case 204:
  2080. #line 1465 "sdefyacc.y"
  2081. {
  2082.                 EMPTY_META_SLOT();
  2083.             }
  2084. break;
  2085. case 205:
  2086. #line 1469 "sdefyacc.y"
  2087. {
  2088.                 META_SLOT_KNOWLEDGE_SPEC();
  2089.             }
  2090. break;
  2091. case 206:
  2092. #line 1476 "sdefyacc.y"
  2093. {
  2094.                 EMPTY_SLOT_CONTROL();
  2095.             }
  2096. break;
  2097. case 207:
  2098. #line 1480 "sdefyacc.y"
  2099. {
  2100.                 SLOT_CONTROL_SPEC();
  2101.             }
  2102. break;
  2103. case 208:
  2104. #line 1527 "sdefyacc.y"
  2105. {
  2106.                 FOUND( "relation_spec" );
  2107.             }
  2108. break;
  2109. case 209:
  2110. #line 1531 "sdefyacc.y"
  2111. {
  2112.                 FOUND( "relation_specs tail" );
  2113.             }
  2114. break;
  2115. case 210:
  2116. #line 1538 "sdefyacc.y"
  2117. {
  2118.                 CHECK_SIMPLE_SPEC();
  2119.                 CURRENT_SLOT->reset_sd_slot();
  2120.             }
  2121. break;
  2122. case 211:
  2123. #line 1543 "sdefyacc.y"
  2124. {
  2125.                 FOUND( "complex_rel_spec" );
  2126.                 CURRENT_SLOT->reset_sd_slot();
  2127.             }
  2128. break;
  2129. case 212:
  2130. #line 1548 "sdefyacc.y"
  2131. {
  2132.                 ACTION( "Catching error at relation_spec" );
  2133.                 ACTION( "  Gobbling rest of relation spec" );
  2134.                 gobble_slot();
  2135.                 CURRENT_SLOT->reset_sd_slot();
  2136.                 yyclearin;
  2137.                 yyerrok;
  2138.             }
  2139. break;
  2140. case 213:
  2141. #line 1560 "sdefyacc.y"
  2142. {
  2143.                 SIMPLE_RELATION_SPEC();
  2144.             }
  2145. break;
  2146. case 214:
  2147. #line 1567 "sdefyacc.y"
  2148. {
  2149.                 COMPLEX_REL_SPEC();
  2150.             }
  2151. break;
  2152. case 215:
  2153. #line 1574 "sdefyacc.y"
  2154. {
  2155.                 FOUND( "slot inverse relation specification" );
  2156.             }
  2157. break;
  2158. case 216:
  2159. #line 1581 "sdefyacc.y"
  2160. {
  2161.                 FOUND( "inv_rel_spec" );
  2162.             }
  2163. break;
  2164. case 217:
  2165. #line 1585 "sdefyacc.y"
  2166. {
  2167.                 FOUND( "NULL inv_rel_spec" );
  2168.             }
  2169. break;
  2170. case 218:
  2171. #line 1589 "sdefyacc.y"
  2172. {
  2173.                 FOUND( "NULL inv_rel_spec" );
  2174.             }
  2175. break;
  2176. case 219:
  2177. #line 1597 "sdefyacc.y"
  2178. {
  2179.                 PUT_INV_CARDINALITY( KB_MULTIPLE );
  2180.             }
  2181. break;
  2182. case 220:
  2183. #line 1601 "sdefyacc.y"
  2184. {
  2185.                 PUT_INV_CARDINALITY( KB_SINGLE );
  2186.             }
  2187. break;
  2188. case 221:
  2189. #line 1605 "sdefyacc.y"
  2190. {
  2191.                 PUT_INV_CARDINALITY( KB_NULL_CARDINALITY );
  2192.             }
  2193. break;
  2194. case 222:
  2195. #line 1612 "sdefyacc.y"
  2196. {
  2197.                 CHECK_SLOT_NAME( yyvsp[0] );
  2198.                 PUT_INV_NAME( yyvsp[0] );
  2199.                 FOUND( "inverse name " );
  2200. #ifdef SD_TRACE
  2201.                 CERR << yyvsp[0];
  2202. #endif                
  2203.  
  2204.             }
  2205. break;
  2206. case 223:
  2207. #line 1625 "sdefyacc.y"
  2208. {
  2209.                 MARK_EMPTY();
  2210.             }
  2211. break;
  2212. case 224:
  2213. #line 1629 "sdefyacc.y"
  2214. {
  2215.                 FOUND( "one link for relation slot" );
  2216.             }
  2217. break;
  2218. case 225:
  2219. #line 1633 "sdefyacc.y"
  2220. {
  2221.                 FOUND("bracketed links supplied for relation slot");
  2222.             }
  2223. break;
  2224. case 226:
  2225. #line 1640 "sdefyacc.y"
  2226. {
  2227.                 FOUND( "single link value " );
  2228. #ifdef SD_ACTION
  2229.                 CERR << yyvsp[0];
  2230. #endif                
  2231.             }
  2232. break;
  2233. case 227:
  2234. #line 1647 "sdefyacc.y"
  2235. {
  2236.                 FOUND( "multiple link values" );
  2237.             }
  2238. break;
  2239. case 228:
  2240. #line 1651 "sdefyacc.y"
  2241. {
  2242.                 FOUND( "link_lst:" );
  2243.                 ACTION( "Missing comma in relation link list" );
  2244.                 sd_signal_error( "Comma missing in link list?" );
  2245.             }
  2246. break;
  2247. case 229:
  2248. #line 1660 "sdefyacc.y"
  2249. {
  2250.                 FOUND( "link name " );
  2251. #ifdef SD_TRACE
  2252.                 CERR << yyvsp[0];
  2253. #endif                
  2254.                 LINK_SCHEMA_NAME( yyvsp[0] );
  2255.             }
  2256. break;
  2257. case 230:
  2258. #line 1668 "sdefyacc.y"
  2259. {
  2260.                 FOUND( "link with meta; link name is " );
  2261. #ifdef SD_TRACE
  2262.                 CERR << yyvsp[-4];
  2263. #endif
  2264.                 LINK_SCHEMA_META_SPEC();
  2265.             }
  2266. break;
  2267. case 231:
  2268. #line 1717 "sdefyacc.y"
  2269. {
  2270.                 FOUND( "attribute_spec" );
  2271.             }
  2272. break;
  2273. case 232:
  2274. #line 1721 "sdefyacc.y"
  2275. {
  2276.                 FOUND( "attribute_specs tail" );
  2277.             }
  2278. break;
  2279. case 233:
  2280. #line 1728 "sdefyacc.y"
  2281. {
  2282.                 FOUND( "simple_att_spec" );
  2283.                 CURRENT_SLOT->reset_sd_slot();
  2284.             }
  2285. break;
  2286. case 234:
  2287. #line 1733 "sdefyacc.y"
  2288. {
  2289.                 FOUND( "complex_att_spec" );
  2290.                 CURRENT_SLOT->reset_sd_slot();
  2291.             }
  2292. break;
  2293. case 235:
  2294. #line 1738 "sdefyacc.y"
  2295. {
  2296.                 ACTION( "Catching error at attribute_spec" );
  2297.                 ACTION( "  Gobbling rest of attribute spec" );
  2298.                 gobble_slot();
  2299.                 CURRENT_SLOT->reset_sd_slot();
  2300.                 yyclearin;
  2301.                 yyerrok;
  2302.             }
  2303. break;
  2304. case 236:
  2305. #line 1751 "sdefyacc.y"
  2306. {
  2307.                 SIMPLE_ATTRIBUTE_SPEC();        
  2308.             }
  2309. break;
  2310. case 237:
  2311. #line 1755 "sdefyacc.y"
  2312.                 ATTRIBUTE_VALUE_SPEC();
  2313.             }
  2314. break;
  2315. case 238:
  2316. #line 1762 "sdefyacc.y"
  2317. {
  2318.                FOUND("simple_att_spec slot_control_spec meta_slot");
  2319.             }
  2320. break;
  2321. case 239:
  2322. #line 1772 "sdefyacc.y"
  2323.                 PUT_VALUE_TYPE( KB_SCHAR_TYPE); 
  2324.             }
  2325. break;
  2326. case 240:
  2327. #line 1775 "sdefyacc.y"
  2328.                             PUT_VALUE_TYPE( KB_CHAR_TYPE ); 
  2329.             }
  2330. break;
  2331. case 241:
  2332. #line 1778 "sdefyacc.y"
  2333. {
  2334.                             PUT_VALUE_TYPE( KB_UCHAR_TYPE ); 
  2335.                   }
  2336. break;
  2337. case 242:
  2338. #line 1781 "sdefyacc.y"
  2339.                             PUT_VALUE_TYPE( KB_SHORT_TYPE ); 
  2340.                   }
  2341. break;
  2342. case 243:
  2343. #line 1784 "sdefyacc.y"
  2344.                             PUT_VALUE_TYPE( KB_INT_TYPE );
  2345.             }
  2346. break;
  2347. case 244:
  2348. #line 1787 "sdefyacc.y"
  2349.                             PUT_VALUE_TYPE( KB_LONG_TYPE ); 
  2350.                   }
  2351. break;
  2352. case 245:
  2353. #line 1790 "sdefyacc.y"
  2354.                             PUT_VALUE_TYPE( KB_USHORT_TYPE ); 
  2355.                   }
  2356. break;
  2357. case 246:
  2358. #line 1793 "sdefyacc.y"
  2359.                             PUT_VALUE_TYPE( KB_UINT_TYPE ); 
  2360.                   }
  2361. break;
  2362. case 247:
  2363. #line 1796 "sdefyacc.y"
  2364.                             PUT_VALUE_TYPE( KB_ULONG_TYPE );
  2365.                   }
  2366. break;
  2367. case 248:
  2368. #line 1799 "sdefyacc.y"
  2369.                             PUT_VALUE_TYPE( KB_FLOAT_TYPE ); 
  2370.                         }
  2371. break;
  2372. case 249:
  2373. #line 1802 "sdefyacc.y"
  2374.                             PUT_VALUE_TYPE( KB_DOUBLE_TYPE ); 
  2375.                 }
  2376. break;
  2377. case 250:
  2378. #line 1805 "sdefyacc.y"
  2379.                             PUT_VALUE_TYPE( KB_VOID_PTR_TYPE ); 
  2380.                 }
  2381. break;
  2382. case 251:
  2383. #line 1808 "sdefyacc.y"
  2384.                             PUT_VALUE_TYPE( KB_STRING_TYPE ); 
  2385.                         }
  2386. break;
  2387. case 252:
  2388. #line 1811 "sdefyacc.y"
  2389.                             PUT_VALUE_TYPE( KB_ANY_TYPE ); 
  2390.                 }
  2391. break;
  2392. case 253:
  2393. #line 1814 "sdefyacc.y"
  2394.                             PUT_VALUE_TYPE( KB_SLOT_ID_TYPE ); 
  2395.                 }
  2396. break;
  2397. case 254:
  2398. #line 1817 "sdefyacc.y"
  2399.                             PUT_VALUE_TYPE( KB_SCHEMA_ID_TYPE ); 
  2400.                 }
  2401. break;
  2402. case 255:
  2403. #line 1820 "sdefyacc.y"
  2404.                             PUT_VALUE_TYPE( KB_FUNCTION_ID_TYPE );
  2405.                 }
  2406. break;
  2407. case 256:
  2408. #line 1823 "sdefyacc.y"
  2409. {
  2410.                       PUT_VALUE_TYPE( KB_BOOLEAN_TYPE );
  2411.                         }
  2412. break;
  2413. case 257:
  2414. #line 1826 "sdefyacc.y"
  2415.                             PUT_VALUE_TYPE( RK_NULL_TYPE );  
  2416.                 }
  2417. break;
  2418. case 258:
  2419. #line 1833 "sdefyacc.y"
  2420. {
  2421.                 MARK_EMPTY();
  2422.             }
  2423. break;
  2424. case 259:
  2425. #line 1837 "sdefyacc.y"
  2426. {
  2427.                     FOUND( "one value supplied for slot" );
  2428.               }
  2429. break;
  2430. case 260:
  2431. #line 1841 "sdefyacc.y"
  2432. {    
  2433.                 FOUND( "bracketed values supplied for slot" );
  2434.             }
  2435. break;
  2436. case 261:
  2437. #line 1845 "sdefyacc.y"
  2438. {
  2439.                 MARK_NULL();
  2440.             }
  2441. break;
  2442. case 263:
  2443. #line 1854 "sdefyacc.y"
  2444. {  
  2445.                 FOUND( "value in value-seq" );
  2446.             }
  2447. break;
  2448. case 264:
  2449. #line 1858 "sdefyacc.y"
  2450. {
  2451.                 FOUND( "more than one value supplied for slot" );
  2452.             }
  2453. break;
  2454. case 265:
  2455. #line 1862 "sdefyacc.y"
  2456. {
  2457.                 FOUND( "Missing comman in value-seq");
  2458.                 yyerror( "syntax error" );
  2459.                 sd_signal_error( "Missing comma in value list?" );
  2460.             }
  2461. break;
  2462. case 266:
  2463. #line 1870 "sdefyacc.y"
  2464. {
  2465.                 SIMPLE_VALUE();
  2466.                 }
  2467. break;
  2468. case 267:
  2469. #line 1874 "sdefyacc.y"
  2470. {    
  2471.                 COMPLEX_VALUE();
  2472.                
  2473.             }
  2474. break;
  2475. case 268:
  2476. #line 1889 "sdefyacc.y"
  2477.                 MAKE_NUM_VALUE( yyvsp[0] ); 
  2478.             }
  2479. break;
  2480. case 269:
  2481. #line 1893 "sdefyacc.y"
  2482. {   
  2483.                 MAKE_FUNCTION_VALUE( yyvsp[-2] ); 
  2484.             }
  2485. break;
  2486. case 270:
  2487. #line 1897 "sdefyacc.y"
  2488. {   
  2489.                     PARSE_NAMESTRING( yyvsp[0] ); 
  2490.                  }
  2491. break;
  2492. case 271:
  2493. #line 1901 "sdefyacc.y"
  2494.                 MAKE_CHAR_VALUE( yyvsp[0] ); 
  2495.             }
  2496. break;
  2497. case 272:
  2498. #line 1905 "sdefyacc.y"
  2499.                 MAKE_STRING_VALUE( yyvsp[0] ); 
  2500.             }
  2501. break;
  2502. case 273:
  2503. #line 1909 "sdefyacc.y"
  2504.                 MAKE_BOOLEAN_VALUE( KB_TRUE ); 
  2505.             }
  2506. break;
  2507. case 274:
  2508. #line 1913 "sdefyacc.y"
  2509.                 MAKE_BOOLEAN_VALUE( KB_FALSE );
  2510.             }
  2511. break;
  2512. case 275:
  2513. #line 1917 "sdefyacc.y"
  2514. {
  2515.                 SET_ALL_SLOTS( );
  2516.             }
  2517. break;
  2518. case 276:
  2519. #line 1921 "sdefyacc.y"
  2520. {
  2521.                 SET_NO_SLOTS();
  2522.             }
  2523. break;
  2524. case 277:
  2525. #line 1967 "sdefyacc.y"
  2526. {
  2527.                 FOUND( "message_spec" );
  2528.             }
  2529. break;
  2530. case 278:
  2531. #line 1971 "sdefyacc.y"
  2532. {
  2533.                 FOUND( "message_specs tail" );
  2534.             }
  2535. break;
  2536. case 279:
  2537. #line 1978 "sdefyacc.y"
  2538. {
  2539.                 FOUND( "message_spec" );
  2540.                 CURRENT_SLOT->reset_sd_slot();
  2541.             }
  2542. break;
  2543. case 280:
  2544. #line 1983 "sdefyacc.y"
  2545. {
  2546.                 FOUND( "message_spec" );
  2547.                 CURRENT_SLOT->reset_sd_slot();
  2548.             }
  2549. break;
  2550. case 281:
  2551. #line 1988 "sdefyacc.y"
  2552. {
  2553.                 ACTION( "Catching error at message_spec" );
  2554.                 ACTION( "  Gobbling rest of message spec" );
  2555.                 gobble_slot();
  2556.                 CURRENT_SLOT->reset_sd_slot();
  2557.                 yyclearin;
  2558.                 yyerrok;
  2559.             }
  2560. break;
  2561. case 282:
  2562. #line 1999 "sdefyacc.y"
  2563. { SET_TYPE_AND_CARD(); }
  2564. break;
  2565. case 283:
  2566. #line 2000 "sdefyacc.y"
  2567. {
  2568.                 SIMPLE_MSG_SPEC();
  2569.             }
  2570. break;
  2571. case 284:
  2572. #line 2007 "sdefyacc.y"
  2573. {
  2574.                 COMPLEX_MSG_SPEC();
  2575.             }
  2576. break;
  2577. case 285:
  2578. #line 2014 "sdefyacc.y"
  2579. {
  2580.                 FOUND( "empty msg_method_spec" );
  2581.                 MARK_EMPTY();
  2582.             }
  2583. break;
  2584. case 286:
  2585. #line 2019 "sdefyacc.y"
  2586. {
  2587.                 FOUND( "msg_method_spec with assignment" );
  2588.             }
  2589. break;
  2590. case 287:
  2591. #line 2023 "sdefyacc.y"
  2592. {
  2593.                 FOUND( "bracketed method supplied for slot" );
  2594.             }
  2595. break;
  2596. case 288:
  2597. #line 2027 "sdefyacc.y"
  2598. {
  2599.                 sd_signal_error( KBE_MULTIPLE_METHODS );
  2600.                 ACTION( "Ignoring extraneous methods" );
  2601.                 gobble_values();
  2602.             }
  2603. break;
  2604. case 289:
  2605. #line 2033 "sdefyacc.y"
  2606. {
  2607.                 ACTION( "Recognize multiple methods" );
  2608.                 ACTION( " <gobble happened at 2nd method_spec>" );
  2609.             }
  2610. break;
  2611. case 290:
  2612. #line 2038 "sdefyacc.y"
  2613. {
  2614.                 MARK_NULL();
  2615.             }
  2616. break;
  2617. case 291:
  2618. #line 2042 "sdefyacc.y"
  2619. {
  2620.                 MARK_NULL();
  2621.             }
  2622. break;
  2623. case 292:
  2624. #line 2051 "sdefyacc.y"
  2625. {
  2626.                 FOUND( "method_spec with function ID" );
  2627.             }
  2628. break;
  2629. case 293:
  2630. #line 2055 "sdefyacc.y"
  2631. {
  2632.                 MESSAGE_FUNCTION_META_SPEC();
  2633.             }
  2634. break;
  2635. case 294:
  2636. #line 2062 "sdefyacc.y"
  2637. {
  2638.                 MESSAGE_FUNCTION_C_ID( yyvsp[-2] );
  2639.                             if ( CURRENT_VALUE->get_error()  != RK_SUCCESS )
  2640.                 {
  2641.                 CURRENT_VALUE->put_error( RK_SUCCESS );
  2642.                 YYERROR;
  2643.                 }
  2644.             }
  2645. break;
  2646. case 295:
  2647. #line 2071 "sdefyacc.y"
  2648. {
  2649.                 sd_signal_warning( KBW_MISSING_FUNCTION_PARENS );
  2650.                 MESSAGE_FUNCTION_C_ID( yyvsp[0] );
  2651.                             if ( CURRENT_VALUE->get_error() != RK_SUCCESS )
  2652.                 {
  2653.                 CURRENT_VALUE->put_error( RK_SUCCESS );
  2654.                     YYERROR;
  2655.                 }
  2656.             }
  2657. break;
  2658. #line 2699 "y_tab.c"
  2659.     }
  2660.     yyssp -= yym;
  2661.     yystate = *yyssp;
  2662.     yyvsp -= yym;
  2663.     yym = yylhs[yyn];
  2664.     if (yystate == 0 && yym == 0)
  2665.     {
  2666. #ifdef YYDEBUG
  2667.         if (yydebug)
  2668.             printf("yydebug: after reduction, shifting from state 0 to\
  2669.  state %d\n", YYFINAL);
  2670. #endif
  2671.         yystate = YYFINAL;
  2672.         *++yyssp = YYFINAL;
  2673.         *++yyvsp = yyval;
  2674.         if (yychar < 0)
  2675.         {
  2676.             if ((yychar = yylex()) < 0) yychar = 0;
  2677. #if YYDEBUG
  2678.             if (yydebug)
  2679.             {
  2680.                 yys = 0;
  2681.                 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
  2682.                 if (!yys) yys = "illegal-symbol";
  2683.                 printf("yydebug: state %d, reading %d (%s)\n",
  2684.                         YYFINAL, yychar, yys);
  2685.             }
  2686. #endif
  2687.         }
  2688.         if (yychar == 0) goto yyaccept;
  2689.         goto yyloop;
  2690.     }
  2691.     if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
  2692.             yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
  2693.         yystate = yytable[yyn];
  2694.     else
  2695.         yystate = yydgoto[yym];
  2696. #ifdef YYDEBUG
  2697.     if (yydebug)
  2698.         printf("yydebug: after reduction, shifting from state %d \
  2699. to state %d\n", *yyssp, yystate);
  2700. #endif
  2701.     if (yyssp >= yyss + yystacksize - 1)
  2702.     {
  2703.         goto yyoverflow;
  2704.     }
  2705.     *++yyssp = yystate;
  2706.     *++yyvsp = yyval;
  2707.     goto yyloop;
  2708. yyoverflow:
  2709.     yyerror("yacc stack overflow");
  2710. yyabort:
  2711.     return (1);
  2712. yyaccept:
  2713.     return (0);
  2714. }
  2715.